ASP.NET中的BackgroundWorker线程

在以下情况下,是否可以在 ASP.NET 2.0中使用BackGroundWorker线程,以便浏览器端的用户不必等待很长时间?

脚本

>浏览器请求一个页面,说SendEmails.aspx
> SendEmails.aspx页面创建一个BackgroundWorker线程,并为线程提供足够的上下文来创建和发送电子邮件。
>浏览器接收到来自ComposeAndSendEmails.aspx的响应,表示正在发送电子邮件。
>同时,后台线程正在进行创建和发送电子邮件的过程,这可能需要相当长的时间才能完成。

我主要关心的是保持BackgroundWorker线程正在运行,试图发送,说50个电子邮件,而ASP.NET工作进程线程池线程很久以前。

解决方法

如果您不想使用AJAX库,或者电子邮件处理非常长,并会超时一个标准的AJAX请求,您可以使用AsynchronousPostBack方法,它是.net 1.1天中的“旧黑客”。

基本上你所做的就是让你的提交按钮在异步状态下开始电子邮件处理,而用户被带到中间页面。这样做的好处是,您可以根据需要更新中间页面,而无需担心达到标准超时时间。

当你的后台进程完成后,它将在数据库/应用程序变量/任何内容中添加一些“完成”标志。当您的中间页面自动刷新时,它会检测到此标志,并自动将用户重定向到“完成”页面。

再次,AJAX使所有这些都不成功,但如果由于某些原因,您需要通过网络进行非常密集或及时的过程,则此解决方案将适用于您。我发现了一个很好的教程here,还有更多的东西在那里。

当我们正在使用与第三方应用程序进行连接的“Web check-in”类型应用程序时,我不得不使用这样的过程,并且它们的导入API是非常缓慢的。

编辑:GAH!诅咒你Guzlar和你的神般的打字能力8 ^ D。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....