簡體   English   中英

使用Parallel.ForEach時如何發送進度

[英]How to send the progress when using Parallel.ForEach

我打算在DataTable上使用Parallel.ForEach,以便可以將每條記錄寫入文件。

我們如何通知用戶處理的記錄的百分比/數量。

通常,當我們使用Background worker時,我們會有一個ProgressChanged事件,用戶會收到完成工作百分比的通知。 我們如何使用Parallel.ForEach或Multiple任務實現這一目標?

謝謝,兔子

我有類似的問題。 我們要解決的問題是在所有線程和UI都可見的數字上使用Interlocked.Increment ,並根據該數字顯示進度條。

編輯:請注意,如果您的計數器很long您將需要使用Interlocked.Read來閱讀它。 如果你使用int,那么進程已經是原子的。

您將需要一個從0開始的(共享)計數器,並在每個部分的末尾增加(使用Interlocked)。

然后你需要

  1. 觸發事件,事件必須使用Invoke(或Dispatch)
  2. 或讓計時器定期對計數器進行采樣

當迭代次數很多時,選項2)更容易,效率更高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM