我正嘗試創建一個狀態窗口,其內容(文本框)應該在漫長的操作中更改。 從主應用程序調用並更新此狀態窗口。 不幸的是,內容僅在操作結束時更新。 我正在使用VS2008,C#和WPF。wpf c#狀態窗口更新
謝謝。
我正嘗試創建一個狀態窗口,其內容(文本框)應該在漫長的操作中更改。 從主應用程序調用並更新此狀態窗口。 不幸的是,內容僅在操作結束時更新。 我正在使用VS2008,C#和WPF。wpf c#狀態窗口更新
謝謝。
這是另一種答案,以便更好地格式化:
代碼應該喜歡漂亮的多是這樣的:
BackgroundWorker bgWorker = new BackgroundWorker();
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);
bgWorker.RunWorkerAsync();
在bgWorker_DoWork
方法,稱之爲「Dispatcher.Invoke
」(或「Dispatcher.BeginInvoke
」,取決於在情況下),並且調用委託可能會更新您的文本框(因爲它與文本框位於同一線程中)。
BackgroundWorker已經支持進度更新(通過BackgroundWorker.ProgressChanged)。爲什麼要用Dispatcher Invoke/BeginInvoke添加另一個間接級別? – micahtan 2010-03-10 01:01:51
如果您正在調用一項服務並且該調用是同步的,那麼主應用程序將無法更新。你需要把它們放在不同的線程上。另外,如果服務調用獲得更高的優先級(UI線程總是優先級較低),則需要強制指示系統更新這些優先級。
如何通過使用Dispatcher在BackgroundWorker線程中執行冗長的操作並每隔一段時間通知內容?它會給你的用戶界面帶來一種反應迅速的進步感覺。
你能舉個例子說明如何做到這一點? – phm 2010-03-08 08:53:06
你的問題到底是什麼? – 2010-03-08 08:50:56