0

私はWPFで何かを書いていますが、UIのパフォーマンスに影響を与えないように、バックグラウンドで(他のスレッドで)いくつかの計算を実行する必要があります。

UIロジックを実行しているWindowクラスがあり、これが新しいCalculations()インスタンスを呼び出す場所です。WindowにはList<CalculationFormulas>(各CalculationFormulaは実行する必要のある計算です)もあります。場合によっては、CalculationFormulaも同時に実行する必要があります。上記のようにCalculationsオブジェクトを作成するときに、リストをCalculationsに渡します。

Calculationsコンストラクターで、ワーカースレッドを非同期的に開始して、リスト内の最初のCalculationFormulaを開始します。次に、適切な時点で、ワーカースレッドがリスト内の次のCalculationFormulaを非同期的に開始し、以下同様に、リストが空になるまで続けます(CalculationFormulaとして)。計算が終了すると、このリストから削除されます)。

私の質問:

1)現在実行中の計算のリストをWindowに送り返すにはどうすればよいですか?それらはすべて異なるスレッドで実行されていますが、計算にプロパティを設定することは可能ですか?List<CalculationFormula>たとえば、各スレッドから更新するRunningCalculationsを使用してCalculations.RunningCalculations、Windowから呼び出すだけですか?

2)List<CalculationFormula>Calculationsに渡したものが最初に変更された場合、現在実行中のすべてのスレッドが変更されたことを認識できるように、新しいリストをCalculationsに渡すにはどうすればよいですか。どういうわけかイベントをトリガーする必要がありますか?

3)計算が終了するたびに、Windowがこれを認識していることを確認するにはどうすればよいですか(UIに反映できるように)?各スレッドがイベントを閉じる直前(つまり、計算が終了したとき)にイベントをトリガーするようにイベントを設定するにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

0

これは、まさにBackgroundWorkerが得意とする類のものです。を開始BackgroundWorkerし、作業が完了したら通知するようにします。ドキュメントには、他の多くのサイトと同様に、適切な例がいくつかあります。BackgroundWorker を検索するだけで、有益な情報が豊富に見つかります。

于 2013-01-13T07:04:36.483 に答える