运行24X7时Windows UI /应用程序冻结

时间:2015-07-14 04:25:08

标签: c# multithreading winforms

我在C#.net 3.5和VS 2008中开发了一个应用程序,其中包含许多控件,如tab,textbox,objelistview,gauges,zedgraph。

我的应用程序旨在通过串口进行通信并更新所述ui上的数据。为了实现这一点,我正在使用另一个计时器线程。

它的24X7运行应用程序,但有时它只是冻结和计时器线程自动停止执行,我可以看到它但无法点击任何地方,我只需要重新启动应用程序以使其再次运行。

请注意我没有看到应用程序没有响应消息或同样,它只是冻结。

如果任何人可以提供相同的输入,那就太好了。

2 个答案:

答案 0 :(得分:1)

您可能有内存泄漏或太多未分级的资源。在冻结应用程序时,请参阅任务管理器并检查内存和CPU使用情况。它们可以帮助您猜测是否使用了太多的RAM,或者您的应用程序是否消耗了太多的CPU处理能力。

在您的应用中考虑一次性物品。尝试正确处理它们。打开串口后别忘了再关机。您还可以使用日志记录机制来查看应用程序冻结的位置。

答案 1 :(得分:0)

尝试使用System.Threading.Timer实现监视程序,并检查负责通信的线程是否响应。另外,我不确定“另一个计时器线程”是什么意思,但同样,你应该使用上述类来跟踪数据池之间的时间并使用回调方法。

请记住,就像 afsharm 所说的那样,你需要释放你不再使用的资源,所以要么在你的COM端口上获得一个句柄并使用它,要么每次更新时都要释放它结束。