我有一个名为 GUI.xaml 的 WPF UI,我需要更改其他类的标签和图像。此外,我需要执行一项长时间的任务,所以我正在使用后台工作人员。所以我在这个网站上阅读了一个解决方案:
在 GUI.xaml.cs 中:
public static ChangeGUI someClass;
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
someClass = new ChangeGUI(this); //
TaskClass.ConnectionThread(SuperHero.getUserID());
}
在 ChangeGUI.cs 中:
public class ChangeGUI
{
GUI _GUIRef;
public ChangeGUI(GUI gui)
{
_GUIRef = gui;
}
public void ChangeLabel()
{
//here we can play with labels
}
public void ChangeMap(ImageSource tmp)
{
if (_GUIRef.image1.Dispatcher.CheckAccess())
_GUIRef.image1.Source = tmp;//ERROR!!!!!!!!!!!!!!
else
_GUIRef.image1.Dispatcher.Invoke(new Changer(ChangeMap), tmp);
}
}
在这里我收到一个错误:调用线程无法访问此对象,因为不同的线程拥有它。欢迎帮助,谢谢!