WPFマルチスレッドアプリケーションがあり、各スレッドはxamlGUIにバインドされているオブジェクトのいくつかの変数を更新します。
通常のスレッドまたはスレッドプールを使用すると、正常に動作します。オブジェクト変数がトレッドによって変更されると、各オブジェクトはGUIでリアルタイムに更新されます。
Parallel.ForEach
すべてのスレッドが終了すると実行が停止するので使いたいです。これは、インターフェイスをブロックするために(使用が待機する必要があるため)、終了したメッセージを表示できるようにするために重要です。悪い点は、Parallel.Foreachでは、すべてのスレッドが終了したときにのみ、リアルタイムで更新されないことです。
この方法は機能しますが、最後にGUIを更新するだけです。
Parallel.ForEach(Computers, new ParallelOptions { MaxDegreeOfParallelism = 1}, computer => { PingTemp(computer); });
この方法は機能しますが、ThreadPoolの最後まで待機しません。
Task.Factory.StartNew(() => Parallel.ForEach<Computer>(Computers, new ParallelOptions { MaxDegreeOfParallelism = 1 }, computer => PingTemp(computer)));
GUIがリアルタイムで更新され、スレッドプールの実行を待ってから続行する場合は、どのようなアプローチをお勧めしますか。