如何确保后台线程在应用程序结束时结束?
问题描述:
我有一个后台线程的asp.net应用程序。线程在应用程序启动时启动,并在应用程序结束时正常停止。我在共享主机上运行网站。不幸的是,有时应用程序在结束时不会触发Application_End事件。我认为线程会被杀死,但事实并非如此。我目前有4个线程在后台运行。应用程序开始前三次,当前应用程序会话中一次。如何确保在应用程序结束时关闭线程?是否有线程检查应用程序是否已重置或重置了的方法?或者有没有办法在应用程序启动时检查这些流氓线程并杀死它们?提前致谢。如何确保后台线程在应用程序结束时结束?
答
使用ThreadPool.QueueUserWorkItem()在后台执行代码,当AppDomain卸载时将结束代码。我假设你正在使用背景工作,根据标签,我会建议尝试这个。 (考虑加入示例代码绘制出更好的答案。)
管理线程池:http://msdn.microsoft.com/en-us/library/0ka9477y.aspx
前景/背景主题:http://msdn.microsoft.com/en-us/library/h339syd0.aspx
究竟如何开始你的线程? – 2010-08-12 04:09:22
鉴于应用程序中的某些线程仍在运行,很显然,应用程序并没有“结束”,只有你认为'前景'线程有。如果您为后台任务使用System.Threading.Threads,则可以将它们的IsBackground属性设置为true。 – Ani 2010-08-12 04:12:13
谢谢Ani,我不知道这个属性,我认为这看起来会解决问题。 – Noel 2010-08-13 16:02:55