我在做WPF程序的时候遇到了这个问题,在运行程序的时候弹出这个错误!
程序中有两个线程分别为监听线程和界面线程,我要在监听线程中更新界面,
首先我遍历界面代码如下:
foreach (Window f in Application.Current.Windows)
{
if(f is MainWindow)
............
}但是程序运行到这里就会弹出窗口:“调用线程无法访问此对象,因为另一个线程拥有该对象”,这个问题如何解决,请高手帮帮忙,谢谢了!!!
程序中有两个线程分别为监听线程和界面线程,我要在监听线程中更新界面,
首先我遍历界面代码如下:
foreach (Window f in Application.Current.Windows)
{
if(f is MainWindow)
............
}但是程序运行到这里就会弹出窗口:“调用线程无法访问此对象,因为另一个线程拥有该对象”,这个问题如何解决,请高手帮帮忙,谢谢了!!!
code is put here */ });如果你在ViewModel里,你可以Application.Current.Dispatcher.Invoke((Action)delegate { /* Your code is put here */ });
这句代码放在哪里,我想在当前所有的窗口中查找特定的窗口。这句也会弹出上面的错误。public delegate void PassParametersEventHandler(List<string> parameters);
public delegate void BindPositionEventHandler();
public override void Execute(List<string> parameters)
{
foreach (Window f in Application.Current.Windows)
{
if (f is MainWindow2)
{
MainWindow2 mainwindow = (MainWindow2)f;
mainwindow.Dispatcher.Invoke(new PassParametersEventHandler (mainwindow.ExcuteResultFirst), parameters);
mainwindow.Dispatcher.Invoke(new BindPositionEventHandler(mainwindow.BindFirstFloorPosition));
break;
}
}
}上面的这段代码是放在监听线程中的,我想要更新MainWindow2界面中的东西,可是出错。
我注释掉foreach内的东西,只留下
foreach (Window f in Application.Current.Windows)
也会出现标题所示的错误,希望高手帮帮忙,急需解决!