Stephen Clearyが非同期コードでブロックすることについては、すべてthe famous blog postを知っています。 Home/Index
を要求するときにMVC 5では、次のコードのデッドロック:MVCコアで非同期コードをブロックすることはできますか?
public class HomeController : Controller
{
public string Index()
{
var model = AsyncMethod();
return model.Result;
}
private async Task<string> AsyncMethod()
{
await Task.Run(() => Thread.Sleep(2000));
return "Hello";
}
}
しかし、まったく同じコードは、MVCコアWebアプリケーションでデッドロックしません。応答はHelloを返します。どうして? MVC Coreでは、1つのリクエストコンテキスト内で複数のスレッドを同時に実行できますか? 非同期コードでブロックしないでくださいというフレーズがMVCコアで開発中ですか?
ありがとうございます!私はもう一度平和的にコードすることができます:-) – Kapol