我有一个Wpf / C#应用程序,可以通过读取RFID卡来更新一些图像。尝试将控件的当前图像与另一个图像进行比较,以及尝试更新至其中一张卡时,出现以下错误。
错误: “调用线程无法访问该对象,因为它拥有另一个线程”
我阅读了几个类似的问题,并且我知道我必须使用Invoke Dispatcher,但我不知道如何。
非常欢迎任何帮助。
if (cardImg1.Source == WCPVariables.BackImage)
{
cardImg1.Source = imgAtual;
}
else if (cardImg2.Source == WCPVariables.BackImage)
{
cardImg2.Source = imgAtual;
}
已解决
我将应用程序更改为以下代码,并使其正常工作。
private static BitmapImage InvokeImageGet(Image ctrl)
{
BitmapImage img = new BitmapImage();
ctrl.Dispatcher.Invoke(new Action(() => { img = (BitmapImage)ctrl.Source; }), DispatcherPriority.ContextIdle);
return img;
}
private static void InvokeImageSet(Image ctrl, BitmapImage img)
{
ctrl.Dispatcher.Invoke(new Action(() => { ctrl.Source = img; }), DispatcherPriority.ContextIdle);
}
if (InvokeImageGet(cardImg1) == WCPVariables.BackImage)
{
InvokeImageSet(cardImg1, imgAtual);
}
else if...