我在运行的大型操作中收到以下消息:
CLR 无法转换
从 COM 上下文 0x1fe458 到 COM
上下文 0x1fe5c8 60 秒。这
拥有目的地的线程
上下文/公寓最有可能
要么进行非抽水等待,要么
处理很长时间的运行
无需泵送 Windows 即可运行
消息。这种情况一般有
负面的性能影响,并可能
甚至导致应用程序变得
无响应或内存使用
随着时间的推移不断积累。到
避免这个问题,全部单身
线程单元 (STA) 线程
应该使用泵等待原语
(例如 CoWaitForMultipleHandles)和
在长时间内定期发送消息
运行操作。
如何发送 Windows 消息以便在长时间操作时不再出现此错误?
目前尚不清楚上下文到底是什么 - 您是否在 WinForms 或 WPF 应用程序的 UI 线程上执行一些长时间运行的任务?如果是这样,请不要这样做 - 使用BackgroundWorker
,或者直接在线程池或新线程上运行任务(可能使用Control.Invoke/BeginInvoke
or Dispatcher
如果您需要更新 UI)。如果你的大手术usesCOM 组件正在抱怨,这会更难......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)