0

UI が複数のスレッドから描画されるアプリケーションがあります。「オブジェクトは既に使用されています」などの例外が発生することがあります。しばらく検索した後、System.Drawing.Brush の使用が pblm を引き起こしていることがわかりました。それで、ブラシを使用する直前にロックを使用しました。ここでの問題は、画面にデータを描画するためにたくさんのブラシを使用していることです。以下のような複数のロックを使用する代わりに実装するベスト プラクティスは何ですか。(注:以下のコードを持つクラスは一度だけ初期化されます)

Brush redBrush = Brushes.Red;
lock(redBrush) {
    grph.DrawString(screenText1, this.Font, redBrush, rectangle, textFormat);
}


Brush blackBrush = Brushes.Black;
lock(blackBrush ) {
    grph.DrawString(screenText2, this.Font, blackBrush, rectangle, textFormat);
}

Brush blueBrush = Brushes.Blue;
lock(blueBrush ) {
    grph.DrawString(screenText3, this.Font, blueBrush, rectangle, textFormat);
}

どんな助けでも大歓迎です

ありがとう

4

1 に答える 1