首页 asp.Net asp.net – 在调用异步方法时不使用等待来防止死锁

asp.net – 在调用异步方法时不使用等待来防止死锁

我需要调用从内部返回一个Task的方法 public override void OnActionExecuting(ActionExecutingContext filterContext) 它不会让我使这个方法异步它抛出以下 An asynchronous module or handler completed while an asynchronous operation was still

我需要调用从内部返回一个Task的方法

public override void OnActionExecuting(ActionExecutingContext filterContext)

它不会让我使这个方法异步它抛出以下

An asynchronous module or handler completed while an asynchronous
operation was still pending.

当打电话时

entityStorage.GetCurrentUser().Result

我陷入僵局如何避免这种情况?

我一直在玩弄它,出来的东西就像

entityStorage.GetCurrentUser().Result.ConfigureAwait(false).GetAwaiter().GetResult();

但这不行.我该怎么做?我的解决方案将需要使用ASP.NET 4和Async Targetting Pack,我不能使用ASP.NET 4.5作为部署到Azure.

解决方法

由于等待只是语法糖为编译器重写一个延续为您,最“直接”的路径将是采取任何代码将遵循您的等待,并使其成为一个ContinueWith调用.

所以,像:

entityStorage.GetCurrentUser().ContinueWith(t =>
{
    // do your other stuff here
});

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/asp-net/20201019/11141.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部