从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

从ASP调用async方法.. NET页面让我等待结果

您是否尝试在启动异步进程后调用Request.End() ?这将迫使当前的请求立即终止。我不确定这是否有效,但你可以试试。

请注意,在网页中启动后台线程并不是一件可取的事情,因为你不能保证线程在完成它试图完成的事情之前不会被杀死,因为应用程序池回收。该线程成为当前应用程序池的一部分,并将在您启动它之后受其支配。我更喜欢的方法是将操作排队,并在web应用程序之外处理它。您可以使用任何您喜欢的队列框架,甚至可以通过将记录写入表或其他东西来滚动您自己的队列框架。

问题是在异步方法Falanwe建议,而不是在我的asp.net代码。

谢谢你的建议

这里有一些要点

  • asyncawait关键字方法是。net 4.5的特性。
  • async后缀是只支持async
  • 方法的约定

在。net 4.5中有更多关于异步的内容

在。net 3.5中,你应该使用Thread或BackgroundWorker来创建自己的异步方法。

我们需要更精确的async方法体来给你更多的帮助