Multithreading .NET在自己的专用UI线程上更新WPF控件

Multithreading .NET在自己的专用UI线程上更新WPF控件,multithreading,wpf-controls,refresh,ui-thread,dedicated,Multithreading,Wpf Controls,Refresh,Ui Thread,Dedicated,我有一个实时应用程序,它以ListView控件的形式不断更新UI日志RichTextBox控件。使用通过事件接收的当前应用程序数据更新控件。我的应用程序运行得非常慢,我发现这是因为ListView日志正在更新,这会阻塞UI线程。正如您可以想象的那样,应用程序对用户的反应似乎非常迟钝 我知道可以在自己的专用UI线程上启动WPF窗口。我想知道是否有可能在自己的UI线程上托管WPF控件,以便主UI线程更新窗口的其余部分而不被阻止 如果这是不可能的,请推荐替代方案来补救这一困境 谢谢 您还没有发布任何代

我有一个实时应用程序,它以ListView控件的形式不断更新UI日志RichTextBox控件。使用通过事件接收的当前应用程序数据更新控件。我的应用程序运行得非常慢,我发现这是因为ListView日志正在更新,这会阻塞UI线程。正如您可以想象的那样,应用程序对用户的反应似乎非常迟钝

我知道可以在自己的专用UI线程上启动WPF窗口。我想知道是否有可能在自己的UI线程上托管WPF控件,以便主UI线程更新窗口的其余部分而不被阻止

如果这是不可能的,请推荐替代方案来补救这一困境


谢谢

您还没有发布任何代码,但是为什么不将ListView绑定到一个?您更新集合,它会引发一个事件,告诉UI它已更改-正是这个事件将更新UI


关于如何实现这一点,有很多教程,其中一个可以在RichTextBox上找到,这是一个需要定期更新的昂贵控件

在WPF控件自己的UI线程上承载WPF控件是不可能的

ObservableCollection在我的情况下不起作用,因为我不能直接访问我绑定的对象—第三方对象

我的解决方案是将UI日志控件建立在ListView的基础上,只需要很少的更改。ListView已针对批量和定期更新进行了优化—这要感谢VirtualisedStackPanel标记