杀死应用程序打开的所有线程

Nig*_*ker 34 .net c# j#

我有一些非常大的应用程序混合使用c#和j#.

有时当我关闭它时,有一些线程没有关闭,它们挂在任务管理器中,不可能从那里杀死它们.

我找到所有这些线程并将它们添加到结束事件中确实存在问题.

是否有某种方式猛烈杀死在关闭事件中由应用程序打开的所有线程?...

谢谢.

是否有一些工具可以告诉我在关闭应用程序时打开了哪些线程?

Cod*_*ray 49

不应该发生,如果是,你试图以错误的方式解决它.

当您的应用程序退出时,.NET Framework将自动终止其IsBackground属性设置为"True"的所有线程.将每个工作线程指定为后台线程,您将不再遇到此问题.利用自动创建后台线程的BackgroundWorkerThreadPool是一个更好的选择.

否则,您需要显式清理前台线程.设计合理的应用程序将执行自己的簿记,并具有确定性的结构化方法,以确保在退出Main方法之前已关闭其所有线程.如果您的线程需要正常终止,那么这就是您应该做的事情.

杀死这个过程是一个非常糟糕的主意,因为让你的线程在你的应用程序中不知不觉地运行.

  • 您没有杀死该线程,您在超时时调用Web服务.@patrik (4认同)

R.V*_*tor 15

您可以使用:Environment.Exit(0); ,如果线程正在运行并且不会导致任何问题,那将关闭应用程序.


Loc*_*cke 5

您应该优雅地关闭线程,但是只希望您和其他人知道不建议但可能的方法:

在您的OnClose处理程序上:

System.Diagnostics.Process.GetCurrentProcess().Kill();
Run Code Online (Sandbox Code Playgroud)

我完全喜欢科迪·格雷的做法。