【发布时间】:2013-01-22 12:17:30
【问题描述】:
几天前,我开始在我创建的一个 c# winform 应用程序中遇到一个错误,指出
CLR 在 60 秒内无法从 COM 上下文 0x278f58 转换到 COM 上下文 0x2790c8。拥有目标上下文/公寓的线程 很可能是在执行非泵送等待或处理非常长时间运行的操作而不泵送 Windows 消息。
当我使用单独的线程来运行 exe 进程以避免冻结 ui 时,会发生这种情况。在发布版本中,该程序运行良好且符合预期,但几乎无法始终如一地调试我的程序(有时运行良好,其他则不太好)..
我尝试通过使用多个谷歌搜索的答案强制BackgroundWorker 同步来实现此过程,这解决了此错误的问题,但使我的程序以意想不到的方式工作(在 exe 完成之前填充的文本框导致错误数据)。
我已经读到这个错误只会发生在生产中而不是发布中。所以我的问题是我应该尝试忍受这种烦恼还是他们的非后台工作解决方案?如果需要任何代码示例,我可以提供,但我认为没有必要
【问题讨论】:
-
这是一个调试器警告。如果没有调试器,您将无法获得它。尽管您肯定会从用户那里得到完全相同的相同投诉。他们不会完全理解您的 UI 为何冻结或程序无法停止且无法响应输入的原因。
标签: c# winforms multithreading process