如何正确关闭已创建多个线程的C#应用​​程序?

Ale*_*lex 14 .net c# multithreading winforms

我正在编写一个GUI应用程序.

应用程序在其生命周期内打开多个线程.其中一个线程正在处理可能来自其他应用程序的事件,因此它会在一段时间(真实)循环中等待从未终止的事件.

用户可以在任何时候关闭应用程序.我想关闭主应用程序打开的所有线程.

我正在使用Process.GetCurrentProcess().Kill(); 目前处理这个问题.

这是一个好的解决方案吗?如果没有,为什么以及什么是处理这个问题的正确方法,如何关闭主应用程序打开的所有线程?

adr*_*nks 23

如果您将新线程创建为后台线程(通过在启动它们之前设置IsBackground),它们将在主线程(应用程序线程)终止时自动停止.

(来自MSDN):

线程是后台线程或前台线程.后台线程与前台线程相同,除了后台线程不会阻止进程终止.一旦属于进程的所有前台线程终止,公共语言运行库就结束该进程.任何剩余的后台线程都会停止并且不会完成.