我正在运行的大型操作上收到以下消息:
CLR无法从COM上下文0x1fe458过渡到COM上下文0x1fe5c8 60秒.拥有目标上下文/公寓的线程很可能是在非抽空等待或处理非常长时间运行的操作而不抽取Windows消息.这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积.为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行操作期间定期泵送消息.
如何发送Windows消息,以便在长时间操作中不再出现此错误?
Jon*_*eet 19
目前还不清楚上下文究竟是什么 - 你是否在WinForms或WPF应用程序的UI线程上执行了一些长时间运行的任务?如果是这样,请不要这样做 - 使用BackgroundWorker
,或直接在线程池或新线程上运行任务(可能使用Control.Invoke/BeginInvoke
或者Dispatcher
如果需要更新UI).如果您的大型操作使用抱怨的COM组件,那将更难......
归档时间: |
|
查看次数: |
29506 次 |
最近记录: |