Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问子线程中实例化的字典项_C#_Wpf_Multithreading - Fatal编程技术网

C# 访问子线程中实例化的字典项

C# 访问子线程中实例化的字典项,c#,wpf,multithreading,C#,Wpf,Multithreading,我目前正在处理线程,希望有人能清楚地解释如何解决以下错误 我在主线程中实例化了一个全局字典dic 主线程创建一个子线程,用图像填充字典 然后主线程尝试访问字典并抛出异常 调用线程无法访问此对象,因为另一个线程拥有它 我访问字典本身没有问题,例如dic.ContainsKey(“key”)工作正常,只是当我尝试访问字典中的BitmapImage时,才会发生错误 我猜这是因为字典中存储的位图图像在子线程中实例化了,这导致了一个问题——我知道如何解决这个问题吗 我在这里看了大量的线程教程和建议,但似乎

我目前正在处理线程,希望有人能清楚地解释如何解决以下错误

我在主线程中实例化了一个全局
字典dic

主线程创建一个子线程,用图像填充字典

然后主线程尝试访问字典并抛出异常

调用线程无法访问此对象,因为另一个线程拥有它

我访问字典本身没有问题,例如
dic.ContainsKey(“key”)
工作正常,只是当我尝试访问字典中的
BitmapImage
时,才会发生错误

我猜这是因为字典中存储的位图图像在子线程中实例化了,这导致了一个问题——我知道如何解决这个问题吗

我在这里看了大量的线程教程和建议,但似乎其他地方都告诉您如何从子线程访问父线程对象,而我正试图做相反的事情


谢谢。

通常,您只能从创建UI元素的线程访问它们。这意味着,您应该确保主线程自己创建
BitmapImage
对象

但是,在本例中,您可能会使用这样一个事实,即在冻结不同线程后(使用方法),可以从不同线程使用
BitmapImage
。因此,您可以尝试在子线程上创建映像,冻结它们,然后将它们添加到字典中(确保以线程安全的方式进行操作,例如在访问字典之前锁定一些互斥对象)


更多信息可以在网站上找到。

发布你的(削减,但展示行为)代码…我不敢相信这么简单-4个小时的头撞墙,我在不到10分钟内得到了答案,谢谢Ravadre@Gavimoss欢迎:-),有趣的是我昨天自己发现了这个方法。