我需要有关在此站点上获得的一些建议的解释。我正在做一个新闻通讯发送应用程序,并且我的邮件是在单独的线程中发送的,因此该过程不会降低整个网站的速度。
几个人建议我将线程IsBackground属性设置为true。
我这样做了,但对它的作用也很好奇,所以我在谷歌上搜索了一下。
事实证明,将IsBackground属性设置为true表示“如果在该线程仍在运行时关闭进程,则可以。”
或者像微软所说的那样“任何剩余的后台线程都被停止并且没有完成。”
我不知道我是否用错误的方式,但是,将IsBackground属性设置为false更好,这样生成的线程就可以完成有关主线程的工作了吗?
最佳答案
如果设置“IsBackground = true”,则将线程标记为非必需线程-因此,即使站点关闭,如果您希望后台工作也完成,我认为您的直觉是正确的,请将其保留为“IsBackground = false”。
这不是万无一失的。产生的线程仍然是主线程的子代,因此,根据站点关闭的方式,它仍然可以关闭整个过程。如果您真的想确保无论站点本身发生什么情况,您的工作都能顺利完成,则应考虑将其提取到自己的流程中,例如WCF服务。