我经常在我的C#代码中得到我认为的死锁,该死锁大量使用了async-await。我有时会在以下代码行中得到它:
await context.SaveChangesAsync();
线程只是无限期阻塞。
我没有在代码中的任何地方同步阻塞。我一直使用async-await到顶部,在这里我从同步的入口方法中初始化了一个新的后台线程:
var threads =
new ThreadStart[]
{
async () => await Run(InitiationDelegate),
}.Select(ts =>
new Thread(ts) { IsBackground = true }
);
foreach(var thread in threads)
{
thread.Start();
}
“运行”具有以下签名:
async Task Run(Func<Task> action)
我不确定僵局可能从哪里来?