从ASP调用async方法.. NET页面让我等待结果
本文关键字:等待 结果 NET ASP 调用 async 方法 | 更新日期: 2023-09-27 18:15:26
我从引用的项目中调用一个方法,像这样:
Dim oValServiceAgent As New ServiceAgents.ValServiceAgent(System.Security.Principal.TokenImpersonationLevel.Impersonation, "ValEndPointName")
Using (CType(HttpContext.Current.User.Identity, System.Security.Principal.WindowsIdentity).Impersonate())
oValServiceAgent.DoStuffAsync()
End Using
用类valServiceAgent引用项目ServiceAgents:
public void DoStuffAsync()
{
//invokes async method using delegates
}
我希望用户能够在DoStuffAsync()完成之前导航到不同的页面。在目前的情况下,这是不可能的。
我正在使用VS2010和目标。net框架3.5
您是否尝试在启动异步进程后调用Request.End() ?这将迫使当前的请求立即终止。我不确定这是否有效,但你可以试试。
请注意,在网页中启动后台线程并不是一件可取的事情,因为你不能保证线程在完成它试图完成的事情之前不会被杀死,因为应用程序池回收。该线程成为当前应用程序池的一部分,并将在您启动它之后受其支配。我更喜欢的方法是将操作排队,并在web应用程序之外处理它。您可以使用任何您喜欢的队列框架,甚至可以通过将记录写入表或其他东西来滚动您自己的队列框架。
问题是在异步方法Falanwe建议,而不是在我的asp.net代码。
谢谢你的建议
这里有一些要点
-
async
和await
关键字方法是。net 4.5的特性。 - async后缀是只支持async 方法的约定
在。net 4.5中有更多关于异步的内容
在。net 3.5中,你应该使用Thread或BackgroundWorker来创建自己的异步方法。
我们需要更精确的async方法体来给你更多的帮助