[問題] 產生多個Thread,執行一段時間後卻死當。

看板C_Sharp (C#)作者 (侶)時間13年前 (2011/11/10 14:38), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
最近小弟寫了一段程式碼。 內容敘述大概是說 一個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

11/10 14:53, , 1F
出在你沒有深深的愛意
11/10 14:53, 1F

11/10 15:36, , 2F
你以為thread可以像鳴人一樣的無限分身下去?
11/10 15:36, 2F

11/10 15:40, , 3F
請問樓上,所以問題出在我每次迴圈沒有釋放Thread嗎?
11/10 15:40, 3F

11/10 15:42, , 4F
我後來在每次結束後都Thread = null; 並且GC.Collect()
11/10 15:42, 4F

11/10 15:42, , 5F
這樣似乎還是會出現問題,想再請教?
11/10 15:42, 5F
文章代碼(AID): #1Ekt5Ws_ (C_Sharp)
文章代碼(AID): #1Ekt5Ws_ (C_Sharp)