在长时间运行期间发送 Windows 消息?

2024-05-04

我在运行的大型操作中收到以下消息:

CLR 无法转换 从 COM 上下文 0x1fe458 到 COM 上下文 0x1fe5c8 60 秒。这 拥有目的地的线程 上下文/公寓最有可能 要么进行非抽水等待,要么 处理很长时间的运行 无需泵送 Windows 即可运行 消息。这种情况一般有 负面的性能影响,并可能 甚至导致应用程序变得 无响应或内存使用 随着时间的推移不断积累。到 避免这个问题,全部单身 线程单元 (STA) 线程 应该使用泵等待原语 (例如 CoWaitForMultipleHandles)和 在长时间内定期发送消息 运行操作。

如何发送 Windows 消息以便在长时间操作时不再出现此错误?


目前尚不清楚上下文到底是什么 - 您是否在 WinForms 或 WPF 应用程序的 UI 线程上执行一些长时间运行的任务?如果是这样,请不要这样做 - 使用BackgroundWorker,或者直接在线程池或新线程上运行任务(可能使用Control.Invoke/BeginInvoke or Dispatcher如果您需要更新 UI)。如果你的大手术usesCOM 组件正在抱怨,这会更难......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在长时间运行期间发送 Windows 消息? 的相关文章

随机推荐