複雑で時間のかかる計算を実行し、これらの進行状況を報告するシングルスレッド プログラムがあります。
private void BtnExecute_Click()
{
ComplexCalculation(Object1);
ComplexCalculation(Object2);
ComplexCalculation(Object3);
}
ComplexCalculation メソッドは次のようになります。
private void ComplexCalculation(Object MyObject)
{
(...do some time consuming operation on MyObject...);
WriteToTextboxGUI("50% Complete" + MyObject.Name);
(...do another time consuming operation on MyObject...);
WriteToTextboxGUI("100% Complete" + MyObject.Name);
}
上記のコードでは、WriteToTextboxGUI(string)
メソッドは進行状況で GUI のテキスト ボックスを更新します。
複雑な計算が実行されている間も GUI の応答性を維持できるように、マルチスレッド アプローチを採用したいと考えています。BackgroundWorker
私は一般的にかなり読んだことがあります.Net 4.0でTPLが登場したThreads
ときにこれがどのように簡素化/改善されたか、.Net 4.5でどのように登場したかを知りたいです.最近のテクノロジでは、次のことができるようにアプリケーションを (比較的単純なコードで) 書き直すことができます。Task
Async
Await
- 複数のスレッドを同時に使用して複雑な計算を実行する
- 以前と同じように進行状況を GUI に報告する
- 全体を通してレスポンシブな GUI を維持する
これらの 3 つの基準を満たす簡単な解決策を教えてくれる人はいますか?
PS このアプリケーションはサーバー上では実行されず、デスクトップ上の WPF で実行されます。