所以在我的DoWork中,我有
List<KeyValuePair<String, BitmapImage>> Files = new List<KeyValuePair<string,BitmapImage>>((List<KeyValuePair<String, BitmapImage>>)e.Argument);
foreach (KeyValuePair<String, BitmapImage> i in Files)
{
string temp = i.ToString(); .......(1)
//.....
}
我传递的论点如下: -
backgroundWorkerForReupload.RunWorkerAsync(files);
其中“files”属于List<KeyValuePair<string, BitmapImage>>
在上面的第(1)行,它会抛出InvalidOperationException
并显示以下消息:“调用线程无法访问此对象,因为其他线程拥有它。”
我很困惑为什么i
归另一个线程所有。任何帮助将不胜感激。谢谢。
答案 0 :(得分:4)
大多数WPF对象(包括BitmapImage
)都是线程仿射的,只能由创建它们的线程使用。
您可以先致电BitmapImage
,为Freeze()
解决此问题。