我有一个WPF应用程序,我在UI线程下有一个MainWindow。我创建了一个线程,在其中我创建了另一个窗口。我必须在一个线程中创建这个窗口,因为它必须不断更新。我希望这个窗口的所有者是MainWindow。所以我使用Dispatcher.Invoke来设置这个窗口的所有者。
但是当我使用Dispatcher.Invoke从线程2访问主UI线程时,我得到了一个跨线程访问异常。
我很快会发布一些示例代码。在此之前,如果有人有任何想法,请分享。
这是我考虑实施上述方法的实际问题:
我有三个折线图,每个窗口中有4个系列,每隔100毫秒更新一次,我正在使用Dispatcher.Invoke。因此,UI有时会变得缓慢而无响应
答案 0 :(得分:3)
我创建了一个线程,我在其中创建了另一个窗口。
这已经不是一个好主意,并且容易出现很多问题。应用程序中的所有窗口都应该由主" GUI"线程。
我必须在一个线程中创建这个窗口,因为它必须不断更新。
有一些方法可以在不在另一个线程上创建窗口的情况下实现。在主线程上创建窗口,然后使用后台线程更新它。该后台线程可以使用Dispatcher.Invoke
更新您的新窗口。