2013-02-19 1 views
-1

배경 작업자를 사용하여 시간이 많이 소요되는 프로세스를 실행하고 위의 프로세스가 실행되는 동안 다른 모든 버튼을 비활성화했습니다. 하지만 다른 버튼을 비활성화하려고하면 크로스 스레드 예외가 유효한 오류가 아닙니다. 어떻게 해결할 수 있을까요?프로세스가 C#에서 실행 중일 때 다른 버튼을 비활성화하는 방법은 무엇입니까?

+0

당신은 Windows를 실행하는이 응용 프로그램 또는 WPF 응용 프로그램을 형성? – hcb

+0

검색 엔진에서 예외를 붙여 넣고'(Begin) Invoke()'를 살펴 보았습니까? WPF : Dispatcher.BeginInvoke가 찾고있는 경우 [크로스 스레드 UI 구성 요소 호출] (http://stackoverflow.com/questions/1395167/cross-thread-ui-component-call) – CodeCaster

+0

의 가능한 복제본입니다. 어쨌든, 왜 지구에서 BkgdWkr을 사용하고 있습니까? –

답변

1

배경 작업자를 시작하기 전에 단추를 비활성화하십시오.

DisableButton(); // runs on UI thread 
backgroundWorker.RunWorkerAsync(); 

다음 버튼을 활성화 RunWorkerCompleted 이벤트 핸들러를 사용

void backgroundWorker_RunWorkerCompleted(object s, RunWorkerCompletedEventArgs e) 
{ 
    EnableButtons(); // runs on UI thread 
} 
관련 문제