我有一个用C#编写的程序,在Windows CE设备(在Compact Framework上)上运行。它处理最少的用户操作(按钮点击),使用串行端口和TCP/IP通信。
问题是有时软件会自动关闭。在后台,应用程序(或应用程序的一部分)似乎仍在运行(至少在一个文档记录的情况下是这样),因为它使用串行端口,所以重启应用程序没有任何帮助。我不能重现这个问题,因为它发生在大多数情况下,没有用户交互,没有串口通信,网络通信都是“我还活着”消息,软件似乎无缘无故地崩溃了。(我尝试让它在调试模式下发生,以便至少知道代码中的问题在哪里,如果它是一个软件错误,但到目前为止我还没有运气。)
因为我已经没有想法了,所以问题是:什么bug或异常、操作系统操作或硬件故障会导致这种行为?
在同一类型的不同设备上都发现了这个问题,所以它不应该是硬件错误。(或者我的所有硬件都有相同的错误。)异常是被处理的,所以它不应该是异常。未处理的异常也会被处理,所以它也不应该是未处理的异常。(我的猜测是它是由StackoverflowException引起的,因为我不知道有任何其他无法捕获的异常,但是代码中没有递归,至少不是自愿的,所以它也不应该是可能的。)
发布于 2010-07-27 15:47:53
如果您使用Thread类启动辅助线程,并且没有指定它们是后台线程,那么它们将使您的进程保持运行,直到它们退出,即使主线程已经完成(即。main窗体已关闭,Main方法已返回。)
如果你有一个StackOverflowException,你的进程就会被Windows直接杀死,所以这不是它。
https://stackoverflow.com/questions/3341534
复制相似问题