将线程设置为背景或不

And*_*rej 10 c# asp.net multithreading

我需要解释一下我在这个网站上得到的一些建议.我正在做一个发送应用程序的时事通讯,我的邮件是在一个单独的帖子中发送的,因此这个过程不会减慢整个网站的速度.有几个人建议我将线程IsBackground属性设置为true.我做到了这一点,但也对此做了很多,所以我用谷歌搜索了一下.事实证明,将IsBackground属性设置为true表示"如果在此线程仍在运行时进程关闭,则可以." .或者,正如微软所说:"任何剩余的后台线程都被停止并且没有完成."

我不知道我是否采用了错误的方法但是,将IsBackground属性保留为false会不会更好,以便生成的线程可以完成有关主线程的工作?

Guy*_*uck 8

如果你设置"IsBackground = true",你将线程标记为不重要 - 所以如果你希望你的后台工作完成,即使网站出现故障,我认为你的直觉是正确的,留下它为"IsBackground = false".

这不是万无一失的; 生成的线程仍然是主线程的子线程,因此根据站点的关闭方式,它仍然可以降低整个过程.如果您确实希望无论站点本身发生什么,您的工作都可以完成,您应该考虑将其提取到自己的流程中,例如WCF服务.