应用程序关闭时线程不会中止

mig*_*jek 15 c# multithreading terminate abort interruption

我有一个应用程序,它在一个单独的部分执行一些后台任务(网络侦听和阅读)Thread.但是,当我关闭应用程序时,似乎Thread没有被终止/中止(单击标题栏上的"x"按钮).是因为主线程例程是while(true) {...}?这里有什么解决方案?我正在为Thread寻找一些"中断"标志作为"while"循环的条件,但没有找到任何.

Mar*_*ers 21

最简单的方法是将线程的IsBackground属性设置为true.这将阻止它保持应用程序打开.当所有非后台线程终止时,应用程序终止.

一种更受控制的停止线程的方法是向它发送一条消息,以便在主线程终止之前干净地关闭并确保它已经终止.

我不推荐的方法是打电话Thread.Abort.这有许多问题,其中之一是无法保证终止线程.从文档:

调用此方法通常会终止该线程.

强调我的.