【发布时间】:2011-01-04 03:48:56
【问题描述】:
我有一个 GUI 应用程序,它连接到传感器、收集数据并使用 BackgroundWorker 线程在后台处理数据。
就目前而言,我正在使用ProgressChanged 将数据发布到 GUI,这似乎一开始就运作良好。从那以后,我提高了数据速率并发现了一个问题;如果让软件运行几分钟,处理器使用量似乎会上升,直到它在我的机器上的两个内核上达到接近 100%,此时,我收到一条错误消息:
托管调试助手“DisconnectedContext”检测到“myapp.exe”中存在问题。附加信息:上下文 0xe2ba0 已断开连接。从当前上下文(上下文 0xe2d10)中释放接口。这可能会导致损坏或数据丢失。
我在网上阅读了一些内容,这些内容表明如果 GUI 应用程序无法足够快地发送消息,就会发生这种情况。我注意到如果我快速调整窗口大小(即泵出更多消息),我可以更快地引发同样的崩溃,这支持我认为的理论?
所以这里的问题是:
- 是否有人同意我关于消息泵送的假设?
- 是否还有其他解释?
- 有什么方法可以证明吗(也许可以查看队列中的消息数量)?
- 这些糟糕的代码气味是否表明我正在以错误的方式处理这件事?
我们将不胜感激地接受任何建议。
【问题讨论】: