有一个ASP.NET 2.0的Web应用程序应该允许发送电子邮件。我有一个立即发送电子邮件的Windows服务。我的Web应用程序根据某个模板编写电子邮件并将其放入MSMQ中,服务从此处获取。ASP.NET后台工作线程
问题是,编写来自模板的消息可能需要一些时间,并且我不希望用户在构建消息并将其传递给服务时等待。
我想了解一些后台进程,它将监听通知请求的内部队列。如果队列为空,则该进程什么都不做,但一旦出现消息,它就开始处理消息。我想只有一个进程不要创建大量线程。
目前我的想法是编写任务调度程序,它将包含通知请求的队列。当新项目被添加到队列中时,调度器检查发送通知的过程是否正在运行。如果是,那么它只是将请求添加到队列中。否则,它会创建一个新的线程,读取队列直到它为空并执行通知请求。
我的问题是我需要确保我的线程不会在ASP.NET完成对客户端的响应之后死掉,因为它是我的线程的父线程。问题是做这件事的最好方法是什么(或者可以做到这一点)?
P.S.如果IIS由于用户不活动而回收ASP.NET进程,我的线程就会死掉。
ASP.NET返回响应并终止处理响应的进程后,此线程是否会死机? – lostaman 2011-02-23 16:56:04
@lostaman - 它将存活,线程属于对象,objet位于缓存中。所以它会一直活着,直到缓存死亡,这几乎是一个应用程序池/ iis重置。 – Peter 2011-02-23 17:40:54
但是这个线程如何连接到缓存? – lostaman 2011-02-23 18:08:55