線程調用abort()會觸發ThreadAbortException異常,調試時不想觸發該異常的解決方式。
1、初始化線程
1 /// <summary> 2 /// 初始化 3 /// </summary> 4 public void InitTask() 5 { 6 //構建線程,啟動 7 _Thread = new Thread(new ThreadStart(() => 8 { 9 try 10 { 11 //開始循環 12 while (_isTaskStart) 13 { 14 Thread.Sleep(100); //do something 15 } 16 } 17 catch (Exception ex) 18 { 19 //TODO:記錄日志 20 } 21 _drawThread = null; 22 })); 23 _drawThread.IsBackground = true; 24 _drawThread.Start(); 25 }
2、終止線程
1 /// <summary> 2 /// 釋放資源 3 /// </summary> 4 protected void DisposeThread() 5 { 6 // 釋放。 7 if (_drawThread != null) 8 { 9 _drawThread.Abort(); 10 while (_drawThread != null && _drawThread.IsAlive) 11 { 12 Thread.Sleep(10); 13 } 14 _drawThread = null; 15 } 16 }
觸發異常:
調試階段避免頻繁觸發異常解決方法:
1、異常設置=》common language中去除ThreadAbortException。兩種方式
A:直接在異常界面,下角有個異常設置,取消勾選。
B:調試菜單=>窗口=>異常設置=>common language runtime exceptions=>ThreadAbortException
上面辦法去除ThreadAbortException選項的勾選,調試仍然出現異常斷點,則可能環境設置仍有問題,解決方式: