【发布时间】:2014-06-11 01:33:28
【问题描述】:
是否可以在ASP.NET 2.0 中使用BackGroundWorker线程用于以下场景,让浏览器端的用户不用等待很长时间?
场景
- 浏览器请求一个页面,比如 SendEmails.aspx
- SendEmails.aspx 页面创建一个 BackgroundWorker 线程,并为该线程提供足够的上下文来创建和发送电子邮件。
- 浏览器收到来自 ComposeAndSendEmails.aspx 的响应,表示正在发送电子邮件。
- 同时,后台线程正在进行创建和发送电子邮件的过程,这可能需要相当长的时间才能完成。
我主要关心的是保持 BackgroundWorker 线程运行,尝试发送 50 封电子邮件,而 ASP.NET 工作进程线程池线程早已不复存在。
【问题讨论】:
-
与其保持运行,不如使用整个缓存删除技巧来“调度”它。
-
QueueBackgroundWorkItem 非常适合发送电子邮件。请参阅 blogs.msdn.com/b/webdev/archive/2014/06/04/… 以获得更强大的后台作业机制,请参阅 Quartz.NET 和 HangFire。如果您使用的是 Azure,请使用 Webjobs 或云服务。