Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET内核中阻止异步代码可能有哪些缺点?_C#_Asp.net_.net Core - Fatal编程技术网

C# 在ASP.NET内核中阻止异步代码可能有哪些缺点?

C# 在ASP.NET内核中阻止异步代码可能有哪些缺点?,c#,asp.net,.net-core,C#,Asp.net,.net Core,ASP.NET核心没有同步上下文,这将允许在没有死锁的情况下阻止异步方法 public void Save(entity) { if (_repository.ExistsAsync(entity.Name).Result) { _repository.SaveNewAsync(entity).Wait(); } } 我是从完整的.NET框架中来到ASP.NET Core的,由于可能的死锁,在那里您不得不到处使用async wait。因此,阅读一段阻止异

ASP.NET核心没有同步上下文,这将允许在没有死锁的情况下阻止异步方法

public void Save(entity)
{
    if (_repository.ExistsAsync(entity.Name).Result)
    {
        _repository.SaveNewAsync(entity).Wait();
    }
}
我是从完整的.NET框架中来到ASP.NET Core的,由于可能的死锁,在那里您不得不到处使用
async wait
。因此,阅读一段阻止异步方法的代码让我感到不舒服。但我不能提出反对阻塞代码的论点,因为它是有效的


问题:在ASP.NET内核中阻止异步代码可能有哪些缺点

async
/
await
的引入是为了帮助人们在明确使用承诺(
Task
s)时,在不使用所有回调意大利面条的情况下释放异步代码的威力。人们认识到,为了使我们的系统获得最佳性能,我们必须使异步活动成为一流的


async
/
await
在不受任何类型的单线程(或逻辑等效)上下文约束的情况下工作得最好;相反,在任何线程都和其他线程一样好的情况下,完成现在准备好进行的工作。如果有一些“受祝福的”线程(UI线程)或一些同步要求(ASP.Net的会话和各种其他上下文),您可以轻松地结束排队工作,以防它需要利用这些上下文(当然,如果您使用的是
异步
,您可以尝试通过
configurewait
退出)

Asp.Net核心是对Asp.Net概念的重建,但没有太多的隐含上下文,允许它成为“自由线程”。这是为了让我们充分利用异步的强大功能

它不是免费线程,只是为了我们可以阻止线程。您现在可以在asp.net内核中编写可能会导致“经典”asp.net死锁的代码,这并不是编写此类代码的许可证。这仍然不是一个好主意