加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET中的BackgroundWorker线程

发布时间:2020-12-16 00:46:51 所属栏目:asp.Net 来源:网络整理
导读:在以下情况下,是否可以在 ASP.NET 2.0中使用BackGroundWorker线程,以便浏览器端的用户不必等待很长时间? 脚本 浏览器请求一个页面,说SendEmails.aspx SendEmails.aspx页面创建一个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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读