在wpf中跨线程访问非ui对象

时间:2010-02-05 14:30:50

标签: c# backgroundworker

我在WPF应用程序中使用backgroundworker时遇到了一些问题。情况如下:

我正在尝试做两件事。首先扫描多个图像,然后在扫描图像上使用条形码识别。我正在检索扫描的图像作为BitmapSource对象的列表,这些对象应该可用于我的后台工作线程。

经过一些谷歌搜索后,似乎大多数解决方案都特定于与主线程上的ui元素进行通信,因为我找到的解决方案都没有为我工作。我尝试过使用代表和调度员,但无济于事。

我需要BitmapSources用它们创建位图,这是条形码识别的输入。

谢谢,

凯文

1 个答案:

答案 0 :(得分:0)

在WPF中,只能从创建它们的线程访问所有DispatcherObjects(不仅仅是UI元素)。 BitmapSource从({1}}继承(间接),因此遵循此规则。但是,它也继承自DispatcherObject,如果它们被冻结,则可以从另一个线程访问Freezable个对象

因此,在初始化Freezable之后,您可以在其上调用BitmapSource,并且可以从其他线程访问它。