作者ragye (侶)
看板C_Sharp
標題[問題] 產生多個Thread,執行一段時間後卻死當。
時間Thu Nov 10 14:38:22 2011
最近小弟寫了一段程式碼。
內容敘述大概是說
一個while迴圈
每次會新增10~200個Thread不等
Thread[] nowThread = new Thread[count];
for(int i = 0 ; i < count ; i++)
{
nowThread[i] = new nowThread(DoWork);
nowThread[i].IsBackground = true;
nowThread[i].Start(i);
}
接著DoWork內容是不斷去創建一個Bat檔後利用Process去執行
並且讀取Bat執行的結果,直到資料夠了或是達到停止條件。
其間我利用thesThread[i].IsAlive判斷是否結束
當所有Thread結束後我會將他們讀取的資料輸出成一個txt檔
但是問題來了。
常常在while迴圈在第N次的時候(N不一定 也許50 也許80)
整個死當,此時使用單步執行想看DoWork內究竟卡在哪裡,就會整個死當,無法觀看。
想請問各為大大,問題究竟出在哪裡?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.125.46.86
1F:→ dragon0414:出在你沒有深深的愛意 11/10 14:53
2F:推 CJHhelper:你以為thread可以像鳴人一樣的無限分身下去? 11/10 15:36
3F:→ ragye:請問樓上,所以問題出在我每次迴圈沒有釋放Thread嗎? 11/10 15:40
4F:→ ragye:我後來在每次結束後都Thread = null; 並且GC.Collect() 11/10 15:42
5F:→ ragye:這樣似乎還是會出現問題,想再請教? 11/10 15:42