2009-04-30 2 views

답변

1

, 당신은 다른 스레드 내에서 (UI 상호 작용, 또는 적절한 스레드 동기화에 대한 Invoke() 또는 BeginInvoke()를 사용하여, 그래서 그냥 당신이하는 것처럼해야 할 것이다 다른 크로스 스레드 작업), 이는 BackgroundWorker의 목적을 무력화시킵니다.

ReportProgress()을 호출하면 스레드로부터 안전한 방식으로 ProgressChanged 이벤트가 발생합니다. 완료 비율을 나타내는 int을 전달합니다 (실제로 실제로 작업을 수행하는 것은 사용자에게 달려 있음). 선택적으로 이벤트 또는 진행 상황에 대한 특정 정보를 얻으려는 object을 전달해야합니다. ProgressChanged 내에서 UI와 상호 작용하고 이벤트를 제기 할 수 있습니다.

+0

일반적으로 다른 스레드의 UI 스레드와는 절대로 이야기해서는 안됩니다. 디버그하기가 매우 어려운 부작용이 나타날 것입니다. 그냥하지 마. Adam이 말한 것처럼 ReportProgress를 호출하는 것이 더 좋습니다. – Tony

-1

코드에 추가하기 만하면됩니다.

void new control.CheckForIllegelCrossPathThreads == false; 
관련 문제