메인 폼과 진행 상태가 표시된 다른 양식의 멀티 스레딩 응용 프로그램을 개발했습니다. 처음에는 : 나는 MainForm다른 스레드의 주 스레드에서 양식 표시
Progress p=new Progress();
두 번째에 ProgressForm를 만들 : 나는 (내 응용 프로그램의 모든 데이터 아 파크) 클래스 모델의 새로운 인스턴스를 생성합니다.
Model m = new Model();
및 이벤트에 대한 가입 :
m.OperationStarted += new EventHandler(OnCopyStarted);
private void OnCopyStarted(object sender, EventArgs e)
{
p.Show();
}
셋째, 내가 다른 모델
private bool isStarted;
public bool IsStarted
{
get{return isStarted;}
set
{
isStarted = value;
if (isStarted && OperationStarted != null)
{
OperationStarted(this, EventArgs.Empty);
}
}
}
내보고자하는의 속성을 변경 다른 스레드에서 일부 작업을 실행은 왜 진행 형태는 주 스레드에 표시되지 않습니까? 잠김없이 실행할 수있는 방법은 무엇입니까?
이러한 스 니펫은 문제와 관련이없는 것 같습니다. 가능한 실패 모드는 주 스레드가 이벤트를 구독하기 전에 스레드를 너무 빨리 시작하는 것입니다. 디버거를 사용하십시오. –
메인 스레드에서 UI 요소 만 만들고 액세스해야한다고 생각했습니다. –