4

各レコードをファイルに書き込めるように、DataTableでParallel.ForEachを使用することを計画しています。

処理されたレコードのパーセンテージ/数をユーザーに通知するにはどうすればよいですか。

通常、Backgroundワーカーを使用すると、ProgressChangedイベントが発生し、実行された作業の割合がユーザーに通知されます。Parallel.ForEachまたはMultipleタスクを使用してこれをどのように達成できますか?

ありがとう、バニー

4

2 に答える 2

2

私も同様の問題を抱えています。それを解決するために私たちがしたことはInterlocked.Increment、すべてのスレッドとUIに表示され、それに基づいて進行状況バーを表示する番号を使用することでした。

編集:あなたのカウンターがあなたであるならば、あなたはそれを読むためlongに使う必要があることに注意してください。Interlocked.Readintを使用している場合、プロセスはすでにアトミックです。

于 2011-02-01T22:47:15.320 に答える
2

0から始まり、各パーツの最後で(Interlockedを使用して)インクリメントする(共有)カウンターが必要になります。

そして、あなたはする必要があります

  1. イベントをトリガーし、イベントはInvoke(またはDispatch)を使用する必要があります
  2. または、タイマーに定期的にカウンターをサンプリングさせます

オプション2)は、反復回数が多い場合に、より簡単で効率的です。

于 2011-02-01T22:51:48.630 に答える