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中文网其他相关文章!