2009-04-30 58 views

回答

1

雖然在技術上可以提高活動,並與來自DoWork中的用戶界面的工作,你就必須從其他線程中(通過使用Invoke()BeginInvoke()的UI交互,或進行適當的線程同步這樣做,就像你其他跨線程操作),這將會破壞BackgroundWorker的目的。

更好的選擇是調用ReportProgress(),然後以線程安全的方式引發ProgressChanged事件。您通過表示完成百分比的int(儘管取決於您實際做了些什麼),並且還可以選擇任何object來獲取有關事件或進度的具體信息。從ProgressChanged內您可以與UI交互,引發事件等。

+0

通常,您不應該從任何其他線程與UI線程交談。你會得到很難調試的副作用。只是不要這樣做。正如亞當所說,更好的選擇是調用ReportProgress。 – Tony 2009-04-30 02:00:18

-1

只需將其添加到代碼中。

void new control.CheckForIllegelCrossPathThreads == false; 
相關問題