WPF 執行緒:從後台執行緒安全更新控制項
WPF 的單執行緒特性需要仔細處理來自非主執行緒的 UI 更新。 Dispatcher
類別提供了解決方案。
利用 Dispatcher.Invoke 方法
Dispatcher.Invoke
允許在主 UI 執行緒上執行委託,這對於從後台執行緒安全存取和修改 WPF 控制項至關重要。
實作步驟:
Dispatcher.Invoke
執行負責 UI 更新的委託。 Action
或 Func
委託作為 Dispatcher.Invoke
的參數。 範例:
<code class="language-csharp">// Launch a background thread for data fetching Thread dataThread = new Thread(RetrieveData); dataThread.Start(); // Background thread function private void RetrieveData() { // ... Data retrieval from a web server ... // Update the UI via Dispatcher.Invoke Application.Current.Dispatcher.Invoke(() => { // Update WPF controls with the fetched data }); }</code>
重要提示:
避免在 Dispatcher.Invoke
內執行冗長的操作,以防止 UI 凍結。對於耗時的任務,請使用 BackgroundWorker
來代替。
以上是如何從非 UI 執行緒安全地更新 WPF 控制項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!