看板 C_Sharp 關於我們 聯絡資訊
最近小弟寫了一段程式碼。 內容敘述大概是說 一個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
dragon0414:出在你沒有深深的愛意 11/10 14:53
CJHhelper:你以為thread可以像鳴人一樣的無限分身下去? 11/10 15:36
ragye:請問樓上,所以問題出在我每次迴圈沒有釋放Thread嗎? 11/10 15:40
ragye:我後來在每次結束後都Thread = null; 並且GC.Collect() 11/10 15:42
ragye:這樣似乎還是會出現問題,想再請教? 11/10 15:42