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欢迎:-),有趣的是我昨天自己发现了这个方法。