C#线程创建问题

goo*_*och 7 .net c#

创建新的System.Thread实例时,默认值为IsBackgroundfalse.任何人都可以阐明为什么这将是默认值是不正确的.创建线程时,我的倾向是正确与否,它将在主线程的后台运行.

感谢您的快速回复.

我确实在我的组件的析构函数中提供了功能,以允许线程优雅地结束.我正在使用ManualResetEventJoin.

我完全理解允许线程优雅地结束是正确和正确的.我没有概念化的是为什么.默认情况下,如果应用程序退出时线程未成功结束,则该线程必须挂起整个应用程序.

Nei*_*ell 22

IsBackground意味着该线程被终止时应用程序终止.这很少是理想的行为,因为这意味着线程无法正常停止和清理.

相反,应用程序应该通知线程终止,等待它完成,然后正确关闭.

这是我对Thread.IsBackgroundMSDN文章中这个模糊的总结:

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