我的程式上有一個執行緒計數器,當我的所有執行緒都完成時,它應該為 0。我開始在我的作業執行緒和執行緒的開頭使用執行緒 - 最后但我的計數器在所有執行緒完成后讀取 145。所以我把它們放在一起,如下圖所示,它仍然不是讀取 0,現在它在所有執行緒完成后讀取 8。這怎么可能?我正在將大約 13000 條郵件訊息中的資料保存到 sql server 資料庫中。每條訊息呼叫一次 ProcessMailMessage。
int threads = 0;
public bool ProcessMailMessage(byte[] mymsg, string username, string folder)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork = (sss, res) => {
threads ;
threads--;
// save some data to database
};
bg.RunWorkerAsync();
return true;
}
uj5u.com熱心網友回復:
我通過在呼叫 RunWorkerAsync() 之前增加計數器并在 RunWorkerComplete 事件中減少來解決這個問題
bg.RunWorkerCompleted = (s, res) =>
{
threads--;
};
threads ;
bg.RunWorkerAsync();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438746.html
上一篇:嘗試從另一個表單呼叫方法
下一篇:在這種情況下如何將字串相乘?
