我的C#UWP-Win10应用程序存在一个奇怪的问题。当我经常调整窗口大小或经常点击随机按钮(> 3次)时,我收到错误:
bla.exe [bla-id]
中发生了未处理的win32异常
关闭此窗口后,应用程序崩溃,在输出窗口中我得到:
该程序' [bla-id] bla.exe'已退出代码-1073741811(0xc000000d)。
没有来自Visual Studio的更多信息。我在此应用中使用了串口,但我发现只有在我连接到设备时才会出现此错误。但是:我已经添加了一个空按钮(没有Click-handler),并且在此按钮上发生了同样的错误。
此外,我已经查看了事件查看器并看到了崩溃的模块:
ntdll.dll(偏移量0x00000000000f5670)
如何追查问题?我没有使用外部API或其他东西。
答案 0 :(得分:0)
经过一段时间(两周)的测试和调试后,我发现了问题:垃圾收集器正在关闭serialport输入流,因此DataReader(正在读取serialport)死掉立即抛出这个未指明的异常。基本上这是datareaader在代码中没有正确处理的问题。 "推理"解决。
答案 1 :(得分:0)
我知道这篇文章已经三岁了,但是当我在寻找解决这个完全相同的问题的方法时,我发现了它,也许我的经验可以帮助下一个偶然发现它的人。
在阅读了OP对他自己的问题的回答后,我开始调查垃圾回收,对象处置等。我发现,如果我的DataReader和DataWriter对象是全局范围的,则它们有被垃圾回收的风险,采用。对我有用的是,每次需要时,都使用using(DataWriter dw = new DataWriter(EventHandlerForDevice.Current.Device.OutputStream)) { ... }
块或对DataReader对象类似的对象在本地确定这些对象的范围。自从以这种方式实现它们之后,我再也没有任何win32异常。希望这会有所帮助!