从BackGoundWorker创建/访问笔刷

人气:591 发布:2022-10-16 标签: .net serialization wpf backgroundworker brush

问题描述

第二次失败,因为无法在后台线程中创建(新建)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保存十六进制颜色 这方面的问题是新的 是否有方法可以序列化System.Windows.Media.Brush,以便在取消序列化时不必对其进行新操作?

我只使用8个笔刷,所以我考虑将它们放入一个枚举中,并按枚举索引进行序列化。

推荐答案

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

714