0

我有一个对象列表,其中包含一个画笔(属性名称“颜色”)。

在 Backgroundworker 中,我想将这些对象的内容写入文件。一切正常,直到我尝试读取画笔属性的颜色。

//this works fine
var brush = myObject.Color;

//this fails with InvalidOperationException
var c= ((SolidColorBrush)myObject.Color).Color;

似乎我的代码以某种方式修改了颜色,但我看不到哪里/如何。有没有办法只读访问画笔的颜色?

问候,

塔比纳

4

2 回答 2

0

我是否感觉到您正在访问未创建它们的线程上的 UI 对象。您不能从 BGW 线程访问 UI 对象。这是不要忘记使用 BGW 类的黄金法则

于 2012-04-25T14:32:23.790 回答
0

如果在将对象添加到该列表后不需要修改它们,您可以尝试在它们从不同线程访问之前冻结它们。

确保 Freeze 调用发生在您创建这些对象的 UI 线程中。您还可以通过事先调用CanFreeze来检查是否可以冻结。

于 2012-04-25T14:56:30.707 回答