現在取り組んでいるコードには、UI スレッドで実行されるメソッドがありました。しかし、時間がかかっていたので、BackgroundWorker に入れることにしました。コードは通常 UI を編集していましたが、スレッドを変更すると、UI スレッドでコントロールを編集する際に問題が発生しました。だから私がしたことは、メソッドがその状態を報告するようにし、ProgressChanged イベントで UI を変更することでした。進行状況を報告するために、このメソッドは「userState」という名前のオブジェクトを 1 つ受け取りますが、私の目的のために、複数のオブジェクトを報告する必要がありました。だから私は次のことをすることにしました:
// Create a dictionary to keep method state for reporting.
// "state" item represents a state type; "error", "update", "success".
// "message"d item represents the message associated with the state.
// "result" item represents the function result.
// "invisiblecolumns" item represents the invisible columns this method finds.
var methodState = new Dictionary<string, object> { { "state", "update" }, { "message", string.Empty },
{ "result", null }, { "invisiblecolumns", null } };
しかし、これが良い方法かどうかはわかりません。バックグラウンド ワーカーでレポート プロセスを処理する方法について、あなたの提案は何ですか? 良い習慣とは何ですか?そして、私がしたことは良い回避策ですか?