如何从线程更新WPF应用程序中的UI

本文关键字:应用程序 UI WPF 更新 线程 | 更新日期: 2023-09-27 18:08:46

我正在编写一个客户端/服务器应用程序,我试图从包含无限循环的线程更新UI,以便执行Socket.Receive。当我在套接字上收到数据包时,我必须更新UI并继续循环。问题是线程不能管理UI,所以我试图在线程内调用BeginInvoke,但结果是UI冻结了。是否有一个简单的过程,允许调用BeginInvoke线程内,并返回控制UI?

如何从线程更新WPF应用程序中的UI

使用阻塞调用来更新主线程上的UI。这样,线程将等待更新完成,然后继续。你以非阻塞的异步方式调用,这可能会淹没主线程,这就是为什么它冻结。

System.Windows.Application.Current.Dispatcher.Invoke(delegate{
    // update UI
});