各レコードをファイルに書き込めるように、DataTableでParallel.ForEachを使用することを計画しています。
処理されたレコードのパーセンテージ/数をユーザーに通知するにはどうすればよいですか。
通常、Backgroundワーカーを使用すると、ProgressChangedイベントが発生し、実行された作業の割合がユーザーに通知されます。Parallel.ForEachまたはMultipleタスクを使用してこれをどのように達成できますか?
ありがとう、バニー
各レコードをファイルに書き込めるように、DataTableでParallel.ForEachを使用することを計画しています。
処理されたレコードのパーセンテージ/数をユーザーに通知するにはどうすればよいですか。
通常、Backgroundワーカーを使用すると、ProgressChangedイベントが発生し、実行された作業の割合がユーザーに通知されます。Parallel.ForEachまたはMultipleタスクを使用してこれをどのように達成できますか?
ありがとう、バニー
私も同様の問題を抱えています。それを解決するために私たちがしたことはInterlocked.Increment
、すべてのスレッドとUIに表示され、それに基づいて進行状況バーを表示する番号を使用することでした。
編集:あなたのカウンターがあなたであるならば、あなたはそれを読むためlong
に使う必要があることに注意してください。Interlocked.Read
intを使用している場合、プロセスはすでにアトミックです。
0から始まり、各パーツの最後で(Interlockedを使用して)インクリメントする(共有)カウンターが必要になります。
そして、あなたはする必要があります
オプション2)は、反復回数が多い場合に、より簡単で効率的です。