我有一個託管WCF服務的Winforms應用程序。在我的應用程序中使用另一個線程
裏面我Connect
按鈕點擊事件,連接是通過BackgroundWorker
爲了打開我的UI,而這仍然連接超級過程響應(1 - 2秒)和BackgroundWorker_RunWorkerCompleted
事件之後去我的其他類,做我的東西。
最近我加幾Thread.Sleep
在調試時,請注意,不凍結我的UI所以以後我搜索我發現,也許是因爲BackgroundWorker
線程(是嗎?)
在我的應用我有表單類和包含幾個事件的另一個類,表格類訂閱這些事件,並以這種方式更新我的UI:
this.Invoke((MethodInvoker)delegate
{
// Update UI
});
所以我的問題是:這是確定以使用另一個線程以這種方式和使用this.Invoke
?
或者我需要以另一種方式做到嗎?
即使壽你的做法是正確的,如果你想知道一個不同的方式來處理用戶界面更新,而無需使用調用我會推薦閱讀有關的SynchronizationContext。 http://www.codeproject.com/Articles/31971/Understanding-SynchronizationContext-Part-I –