使用Task.Result和Task.Wait()会在winform和ASP.NET中会死锁,因为它们SynchronizationContext具有对象,两个线程在SynchronizationContext...争夺导致死锁,而ASP.NET Core则不会产生死锁,因为ASP.NET Core本质是一个控制台应用程序,并没有上下文
❌下面的例子,虽然都不会产生死锁,但是依然具有很多问题
async Task计时器队列)的压力
❌下面例子因为没有释放,所以在每次请求发出之后,计时器在队列中停留10秒钟
public async Task HttpClientAsyncWithCancellationBad...CancellationToken时触发的任务,但是如果CancellationToken不触发,则没有办法释放CancellationTokenRegistry,就有可能会导致内存泄露
public...cancellationToken);
}
return await task;
}
}
使用超时任务
:x:下面这个例子即使在操作完成之后,也不会取消定时器,这也就是说最终会在计时器队列中产生大量的计时器