c# - 将耗时的进程从我的 ASP.NET 应用程序中移走

标签 c# asp.net web-services c#-4.0 asynchronous

我的 Asp.net 应用程序生成动态 pdf。有时这需要一段时间,并且是一个相当繁重的过程。实际上我不希望我的用户等待pdf,只需在生成后将其发送到那里的邮件即可。

所以我尝试了网络服务。我将一个 id(从数据库获取数据)和一些字符串传递给 webservice 的方法。

但对于 Web 服务(即使使用异步调用),客户端也只能在生成 pdf 后收到其响应。所以用户还是需要等待。

所以我有点卡住了,一定有一种我忽略的方法。

最佳答案

您不需要 Web 服务即可获得进行异步调用的能力。

您可以使用 ThreadPool.QueueUserWorkItem()作为 ASPX 页面中的“即发即弃”方法,然后返回带有某种“工作项 ID”的回复 - 例如收据或订单号。

在传递给 QUWI 的 WaitCallback 中生成 PDF。 当 pdf 准备好时,WaitCallback 可以发送电子邮件或其他任何内容。


如果您希望在网页之外可以访问该功能,请使用网络服务。不要严格将其用于异步。

关于c# - 将耗时的进程从我的 ASP.NET 应用程序中移走,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831498/

相关文章:

c# - ASP.Net - 从包含数据绑定(bind)的标记调用方法

c# - 如何在 C# 中从维基百科的页面中提取维基代码而不是 html?

c# - Ninject 拦截不会在同一类中使用嵌套方法调用触发

c# - 如何强制脚本在特定位置执行?

Python - SOAP 水 - 没有模块

c# - 为什么在构建将运算符 == 提升为可为 null 的表达式时,对泛型和非泛型结构的处理方式不同?

c# - 为什么 Visual Studio 有时不转到我的断点?

c# - 使用 JavaScript 从 C# 执行 doPostBack

ios - 从返回 SIGABRT 的 Web 服务访问字典对象

web-services - 使用 Coldfusion 与 Bullhorn SOAP web 服务 API 集成