.net 程式 執行程序 突然方法就沒有執行下一步了。查閱網上的資料得知 可能是因為子執行緒出現例外,狀態處于正在終止的狀態。請問什么情況造成的子執行緒自己停止的情況。如果有了解的大神幫忙解答一下,因為沒有明顯的例外拋出,不知道是不是代碼出現問題,如果有需要。后續補上也可
uj5u.com熱心網友回復:
執行緒只有正常結束和例外終止,即使你主動去終止執行緒的時候,往往都是使執行緒引發ThreadAbortException例外而終止。要討論你的執行緒為何意外停止,最好還是貼上你的代碼。
uj5u.com熱心網友回復:
我開了個子執行緒去執行一個方法,但是執行到一半的時候 就不會繼續進行下一段的代碼。 一開始我以為執行緒關閉了。再點擊運行顯示執行緒正在執行代碼。去翻閱資料的時候 猜測是不是執行緒終止影響的。現在判斷的原因也是個猜測uj5u.com熱心網友回復:
private void DutyTime()貼上部分代碼。開的一個子執行緒作一個回圈定時操作。執行其中一個方法
{
while (true)
{
time = DateTime.Now.ToString("HH:mm");
//左邊為定時分析。右邊為手動分析IsAuto為傳遞過來為True的數值
if (((time =="09:00" ||time == "21:00") && isStart == false)||(IsAuto == true && isStart == false))
{
//MessageBox.Show("開始分析");
isStart = true;
if (IsAuto != true) //如果不是手動分析,則獲取當前時間段來分析
{
analyMonth = DateTime.Now;
}
if (Name == "一鍵分析")
{
Analysis_XX1(analyMonth,0);
Analysis_XX2(analyMonth,0);
Analysis_XX(analyMonth,0);
}
else if(Name == "XX")
{
Analysis_XX(analyMonth,0);
}
else if (Name == "XX1")
{
Analysis_XX1(analyMonth,0);
}
else if (Name == "XX2")
{
Analysis_XX2(analyMonth,0);
}
if (IsAuto ==true)
{
IsAuto = false;
Name = "一鍵分析";
}
isStart = false;
}
//GC.Collect();
Thread.Sleep(1000);
}
}
uj5u.com熱心網友回復:
應該是出例外了,子執行緒的例外需要在子執行緒里使用 try 來捕獲,這種例外不會傳遞到主執行緒。uj5u.com熱心網友回復:
如果是例外的話,就算捕獲成功怎么完成下一步需要執行的代碼呢。還是說避免例外的出現~uj5u.com熱心網友回復:
可以把這段放到主執行緒里,然后試試使用try能不能捕獲到例外。uj5u.com熱心網友回復:
你把每個可能的位置都標注一下。用個FLAG,然后在例外的時候彈出 來就可以知道錯誤在那一行了。成功了再去掉這些測驗代碼。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/8458.html
標籤:C#
