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

时间:2016-09-26 12:50:53

标签: c# wpf multithreading

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

1 个答案:

答案 0 :(得分:2)

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

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