0

他のプロパティの中にブラシ (プロパティ名 "Color") を含むオブジェクトのリストがあります。

Backgroundworker では、これらのオブジェクトの内容をファイルに書き込みたいと考えています。ブラシ プロパティの色を読み取ろうとするまで、すべて正常に動作します。

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

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

私のコードが何らかの形で色を変更しているように見えますが、どこで/どのように表示されません。ブラシの色に読み取り専用でアクセスする方法はありますか?

よろしく、

タビナ

4

2 に答える 2

0

UIオブジェクトを作成していないスレッドでUIオブジェクトにアクセスしていると思いますか。BGWスレッドからUIオブジェクトにアクセスすることはできません。それがBGWクラスの使用を忘れないための黄金律です

于 2012-04-25T14:32:23.790 に答える
0

リストに追加された後にオブジェクトを変更する必要がない場合は、別のスレッドからアクセスされる前にオブジェクトをフリーズしてみてください。

Freeze 呼び出しが、これらのオブジェクトを作成した UI スレッドで発生することを確認してください。事前にCanFreezeを呼び出して、凍結が可能かどうかを確認することもできます。

于 2012-04-25T14:56:30.707 に答える