在Windows CE中从调试器运行导致最终内存不足崩溃

本文关键字:内存不足 崩溃 运行 CE Windows 调试器 | 更新日期: 2023-09-27 18:07:00

我正在为Windows CE机器构建一个c#应用程序。CE机器正在与串行设备通信,我正在使用SerialPort类。

当我在Visual Studio中通过右键单击并部署来运行项目时,它可以正常运行15到20分钟,然后变慢并最终因内存不足而崩溃,但是当我部署解决方案并从CE机器本地运行它时(导航到文件夹,打开exe),它可以正常运行一整天,只要我尝试过。

我不知道为什么。我已经尝试过为发布和调试而构建,但没有什么区别。唯一能确定的是它从哪里跑出来的。我还尝试使用dotTrace分析应用程序,并且似乎在分析开始之前将其部署到CE机器;在任何情况下,我都不能在分析器运行时重现错误。

我还尝试将处理串行流的代码打包到DLL中,认为Visual Studio可能在调试时混淆了它内部的某些东西,但这也没有改变任何东西。

我能做些什么来增加从IDE运行的稳定性?我喜欢能够调试它,但是不一致让我觉得我可能做错了什么。

在Windows CE中从调试器运行导致最终内存不足崩溃

据我们所知,我所描述的问题与System.IO.Ports中的SerialPort类有关。我认为这可能与这里描述的一些问题有关;托管的SerialPort类调用WinAPI代码,该代码在循环中是非托管的,出现问题,并且非托管内存丢失。