【问题标题】:Create/Access Brush from a BackGroundWorker从 BackGroundWorker 创建/访问画笔
【发布时间】:2013-07-04 01:08:12
【问题描述】:

第二个失败,因为无法在后台线程中创建(新)UI 对象
(好吧,你可以创建它,但你不能使用它)
错误信息:
不能使用属于与其父 Freezable 不同的线程的 DependencyObject。

docTextAndHighlight.WordHighlight.Add(wordPos, new HightLight(w.Len, System.Windows.Media.Brushes.Salmon));


docTextAndHighlight.WordHighlight.Add(wordPos, new HightLight(w.Len, new SolidColorBrush((Color)ColorConverter.ConvertFromString(w.Highlight))));

这些颜色都启动 System.Windows.Media.Brushes

添加一个功能让用户保存搜索,因此需要将颜色保存到数据库中。
现在我正在使用 ToString 来保存 Hex 颜色
问题在于新
有没有办法对 System.Windows.Media.Brush 进行序列化,这样我在反序列化时就不必重新创建它?

我只使用 8 个画笔,所以我想把它们放在一个 Enum 中并按 Enum 索引序列化。

【问题讨论】:

    标签: .net wpf serialization backgroundworker brush


    【解决方案1】:

    创建后在画笔上调用Freeze,它不再是线程关联的。

    【讨论】: