執行緒內有一個while回圈,發現運行幾個小時后執行緒自動停止了,也捕捉不到例外,什么原因呢
uj5u.com熱心網友回復:
1、確實是無例外的停止,那就是回圈條件不滿足2、有例外,你的例外捕獲或者處理有問題;
uj5u.com熱心網友回復:
跳出while回圈了。想要捕獲例外得將例外拋出到執行執行緒,由執行執行緒捕獲。“運行幾小時自動停止”說得不準確,不清楚運行程序中都做了什么操作,達到某個條件就執行完畢了。uj5u.com熱心網友回復:
你是怎么捕獲例外的?uj5u.com熱心網友回復:
把你代碼發出來uj5u.com熱心網友回復:
try
{
while (true)
{
File.AppendAllText(@"C:\log.txt", "開始運行" + DateTime.Now + "\t\r\n");
Thread.Sleep(30);
UInt16 values = 0;
robot.ReadTrue(Convert.ToUInt16(201), ref values, 0);
//if (robot.ReadWR(Convert.ToUInt16(201), ref values, Convert.ToByte(0)) == false)
//{
// File.AppendAllText(@"C:\log.txt", "機械手任務未完成" + DateTime.Now + "\t\r\n");
// continue;
//}
if (robot.ReadState())
{
File.AppendAllText(@"C:\log.txt", "監控到空閑機臺" + DateTime.Now + "\t\r\n");
if (this.InserTask() == false)
{
File.AppendAllText(@"C:\log.txt", "開始切換機臺" + DateTime.Now + "\t\r\n");
this.fun();
}
}
if (rack.ReturnTablePos(Global.PartToDoing) == false)
{
bool cnc_1 = cnc.ReturnCnc("CNC-Ele-27");
bool cnc_2 = cnc.ReturnCnc("CNC-Ele-28");
bool cnc_3 = cnc.ReturnCnc("CNC-Ele-29");
if (cnc_1 == false && cnc_2 == false && cnc_3 == false)
{
btnStart.Text = "重新啟動";
break;
}
}
}
}
catch (Exception e)
{
File.AppendAllText(@"C:\log.txt", e.ToString() + DateTime.Now + "\t\r\n");
MessageBox.Show(e.ToString());
}
finally
{
File.AppendAllText(@"C:\log.txt", "未發現例外" + DateTime.Now + "\t\r\n");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/90647.html
標籤:C#
上一篇:C# 獲取當前系統所有輸入法
下一篇:graphics
