尝试更新图像控件时发生错误,WPF中出现其他线程错误

时间:2019-01-03 01:33:50

标签: c# wpf multithreading

我有一个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... 

0 个答案:

没有答案