![](/img/trans.png)
[英]What if I don't wait for an async method when calling it for a synchronous method in asp.net?
[英]Calling async method from ASP.NET page makes me wait for the result
在我的ASP.NET页面中,我从引用的项目中调用一个方法,如下所示:
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 Framework 3.5
启动异步过程后,您是否尝试过调用Request.End()? 这将迫使当前请求立即结束。 不知道这是否行得通,但您可以尝试一下。
请注意,启动后台线程不是在Web页面中最好的操作,因为由于应用程序池的回收,不能保证在完成尝试完成的线程之前不会杀死该线程。 该线程将成为当前应用程序池的一部分,并且在您启动该线程后将受其支配。 我更喜欢的方法是将操作排队并在Web应用程序之外进行处理。 您可以使用任何想要的队列框架,甚至可以通过将记录写入表或其他东西来滚动自己的队列框架。
问题出在Falanwe建议的异步方法中,而不是我的asp.net代码中。
感谢您的建议。
这里有几点
async
和await
关键字方法是.Net 4.5的功能。 更多关于异步这里在.NET 4.5
在.net 3.5中,您应该使用Thread或BackgroundWorker创建自己的异步方法。
我们需要您的异步方法主体更精确,以便为您提供进一步的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.