【问题标题】:Windows UI/Application freeze when running 24X724X7 运行时 Windows UI/应用程序冻结
【发布时间】:2015-07-14 04:25:07
【问题描述】:

我在 C#.net 3.5 和 VS 2008 中开发了一个应用程序,其中包含许多控件,例如选项卡、文本框、objelistview、仪表、zedgraph。

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

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

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

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

【问题讨论】:

    标签: c# multithreading winforms


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      还请记住,就像 afsharm 所说,您需要释放不再使用的资源,因此要么在您的 COM 端口上获取一个句柄并使用它,要么在每次更新时释放它结束了。

      【讨论】:

        猜你喜欢
        • 2021-01-22
        • 1970-01-01
        • 2021-12-04
        • 2011-03-31
        • 2011-11-07
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        • 1970-01-01
        相关资源
        最近更新 更多