我在主线程中有一个WPF窗口。在这个窗口的按钮点击事件中,我正在加载数据。同时,我正在使用一个单独的线程来显示等待屏幕。但是我无法将主窗口设置为等待屏幕的父级。它会抛出以下错误:因为不同的线程拥有它,所以调用线程无法访问此对象。
我在主线程中有一个WPF窗口。在这个窗口的按钮点击事件中,我正在加载数据。同时,我正在使用一个单独的线程来显示等待屏幕。但是我无法将主窗口设置为等待屏幕的父级。它会抛出以下错误:因为不同的线程拥有它,所以调用线程无法访问此对象。
您需要了解 Dispatcher.Invoke
方法。
您可以使用BackgroundWorker
类执行异步操作,它会处理可能存在的线程关联问题。使用它与连接几个事件一样简单。
这篇文章可帮助您入门。
或者您也可以使用Dispatcher.Invoke
在正确的线程上执行操作:
private void DoStuffOnThread()
{
Dispatcher.Invoke(new Action(DoStuffOnUIThread));
}
private void DoStuffOnUIThread()
{
// ...
}