gpt4 book ai didi

c# - 访问在子线程中实例化的字典项

转载 作者:太空狗 更新时间:2023-10-29 22:53:44 25 4
gpt4 key购买 nike

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

我有一个全局 Dictionary<string, BitmapImage> dic我在主线程中实例化。

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

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

The calling thread cannot access this object because a different thread owns it

我访问字典本身没有问题,例如dic.ContainsKey("key")工作正常,就在我尝试访问 BitmapImage 时在发生错误的词典中。

我猜这是因为存储在字典中的 BitmapImages 在子线程中被实例化并且它导致了一个问题 - 我有什么想法可以解决这个问题吗?

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

谢谢。

最佳答案

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

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

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

关于c# - 访问在子线程中实例化的字典项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com