【发布时间】:2014-09-22 13:33:08
【问题描述】:
在我的 C# Windows 窗体应用程序中有两个线程:
- 主线程 (Program.cs)
- WorkerClass 线程(STA-Apartment)。
当有长时间运行的任务时,它会冻结/卡住整个进程并且没有异常或通知被触发..它挂起应用程序。
仅处理记录的内部应用程序(从 SQL 表中选择并插入 Access DB 表中)
UI 更新将使用事件操作功能完成。
为卡住的进程并行任务查找附加快照。似乎线程在内部相互等待并阻止进程。与SystemEvents.UserPreferenceChanged 事件相关的代码位于其中一个堆栈中。
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
用VS和break附加进程,然后检查所有的调用堆栈,你应该可以找到它挂在哪里
-
为什么你的工作线程是 STA 线程?不要为它指定公寓模型。
-
"UI 更新将使用 .net 事件操作功能完成。"这是非常模糊的。发布所有相关代码。目前我们只能猜测。
-
谁投了反对票?嘘。如果这个问题不存在,我可能永远找不到完全相同的问题。
标签: c# .net winforms ui-thread sta