我有一个GUI应用程序连接到传感器,收集数据并使用BackgroundWorker
线程在后台处理它。
目前我正在使用ProgressChanged
将数据发布到GUI,这似乎一开始就运作良好。我已经提高了数据速率并发现了一个问题;如果软件运行几分钟,处理器使用量似乎会增加,直到它在我的机器上的两个核心上达到接近100%,并且在那时,我得到一个错误,其中显示:
托管调试助手'DisconnectedContext'检测到'myapp.exe'中存在问题。附加信息:上下文0xe2ba0已断开连接。从当前上下文释放接口(上下文0xe2d10)。这可能会导致损坏或数据丢失。
我已经阅读了网络上的一些内容,这表明如果GUI应用无法足够快地提取消息,就会发生这种情况。我注意到如果我快速调整窗口大小(即加载更多消息),我可以引发相同的崩溃更快发生,这支持我认为的理论?
所以这里的问题是:
非常感谢任何建议。
答案 0 :(得分:3)
这种听起来像是一个非常具体的问题,我认为这就是为什么还没有人回答,但我想我可以在问题#3上提供帮助。
Spy++应该能够看到发送到您窗口的消息。我认为您可以使用它来观察消息到您的GUI并进行调整大小测试。如果您看到尝试处理的消息大量增加,则可能会确认您的假设。
顺便说一句,我已经读过你可以将主线程公寓从STAThread更改为MTAThread以使这个MDA消失。
Perphaps您可以修改您的应用程序,将传感器读数吐出到文件或以不同的机制排队,而不是不断更新GUI。 HTH。的