![]() |
1
15
做 不 使用thread.abort。此方法是为.NET运行时需要强制终止线程以卸载程序而保留的。 只有当您要卸载AppDomain并希望首先除去其中运行的线程时,才可以“安全地”使用它。 要除去线程,请以合作模式编写它。这意味着线程应该定期检查某种标志,如果设置了该标志,则通常退出线程方法。要“杀死”线程,只需设置标志并等待线程退出。 您可以将事件对象或简单的布尔变量用于此标志。 但是 不要使用线程。中止 . |
![]() |
2
1
使用 SafeThread 把shouldreportthreadabort设为false,使问题消失…… 一个更好的解决方案是在调试器中运行它,并检查所有异常类型的异常,然后找出中止线程所发生的情况。 编辑:感谢您发布代码示例,这使得问题更容易看到。 不要调用线程。中止 |
![]() |
3
0
同意史蒂文关于在抛出时打开所有异常的想法。然后你就可以立即看到问题了。 需要记住的一点是,如果您的Visual Studio设置为“常规”而不是“Visual C开发人员”设置,那么您将没有调试菜单选项。如果我在一台新机器上或使用一个新的配置文件,仍然会抓住我… |
![]() |
4
-3
你可以试着打电话
之后
这将给后台线程500毫秒的时间来做它需要做的事情,然后主线程才有机会调用
编辑:但我同意最好的解决方案是根本不使用thread.abort()。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 3 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 3 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |