本文介绍了线程在循环几个小时后停止。 (而循环)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不确定为什么这段代码在运行好几个小时后停止。我有预感,它与线程被自动中止,垃圾收集有关吗?该项目是一个winforms项目。 任何帮助将不胜感激! 以下是代码:
I am unsure why this code stops after running fine for hours. I have a hunch that it has to do with threads being aborted automatically, garbage collection? The project is a winforms project. Any help would be greatly appreciated! And here is the code:
public void InstantiateListenerAndResponder() { try { var t = new Thread(Listen) { Priority = ThreadPriority.Lowest, IsBackground = true}; var t2 = new Thread(StartResponder) { Priority = ThreadPriority.Lowest, IsBackground = true}; ThreadManager.AddThread(this); ThreadRunning = true; t.Start(); t2.Start(); } catch (Exception ex) { var se = new SystemEmailer(); se.SendMessage("ERROR CODE 104 - \n" + ex.Message); } } private void Listen() { try { while (ThreadRunning) { try { GetMail(ReceiverEntity.UserName, ReceiverEntity.Password, ReceiverEntity.IncomingUrl, ReceiverEntity.IncomingPort, ReceiverEntity.SecurityType == "SSL", ReceiverEntity.ReceiverId); var se = new SystemEmailer(); se.SendMessage("ASR CHECKED EMAIL AT: " + DateTime.Now.ToString()); Thread.Sleep(30000); } catch { var se = new SystemEmailer(); se.SendMessage("Error checking email. Will try again." + DateTime.Now.ToString()); } } } catch (Exception ex) { var se = new SystemEmailer(); se.SendMessage("ERROR CODE 103 - \n" + ex.Message); } } private void StartResponder() { try { while (ThreadRunning) { ExecuteResponder(); Thread.Sleep(ReceiverEntity.ResponseInterval * 1000); } } catch (Exception ex) { var se = new SystemEmailer(); se.SendMessage("ERROR CODE 102 - \n" + ex.Message); } }推荐答案
它在事件日志,谢谢RyanDev。电子邮件服务器超时,我的try catch没有正确处理异常。问题已解决。 It was in the event log, thanks RyanDev. Email server was timing out and my try catch was not handling the exception properly. Issue resolved.
更多推荐
线程在循环几个小时后停止。 (而循环)
发布评论