【发布时间】:2010-01-07 00:22:47
【问题描述】:
我有一个由工作线程(不是 UI 线程)创建的 BitmapFrame 对象并放置在静态集合中。
然后,我有一个不同的工作线程将此对象分配给 UI 线程拥有的 Image 对象。
如你所想,我无法访问Image 对象(因为它属于 UI 线程),我得到:"calling thread cannot access the object because different thread owns it"。
所以,我尝试通过执行以下操作来解决它:
imageMainImage.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new Action<ImageItem>(delegate(ImageItem A) {
imageMainImage.Source = A.ManipulatedPreview;
}), II);
II 是 Image 项(由工作线程创建并通过静态类可用),imageMainImage 是 UI 线程拥有的 Image 对象。
但现在,我又得到了"calling thread...",但这次我得到了它,因为II 对象属于不同的线程(第一个工作线程)。
我想要做的是让一个线程处理属于不同线程的 2 个 Image 元素。
我正在尝试以不同的方式处理整个过程,但我想知道,有没有解决方案?
谢谢。
【问题讨论】:
-
+1:有趣的问题。我的猜测:您会得到的最佳答案是“不,没有解决方案”。希望我错了:-)
-
我有一种很好的感觉,没有办法做到这一点。如果有办法将对象“所有权”从一个线程传递到另一个线程,我会很满意。
标签: c# wpf multithreading