在什么情况下您想使用
public async Task AsyncMethod(int num)
代替
public async void AsyncMethod(int num)
我能想到的唯一情况是您是否需要任务以跟踪其进度。
另外,在以下方法中,async和await关键字不是必需的吗?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
你的任务,你应该await Task.Delay(num)
代替
Task.Delay
并不是Task.AsyncDelay
所有的任务方法都是异步的
async void
代替async Task
。该方法崩溃是因为该方法使用的是声明为控制器成员的Entity Framework上下文对象,该对象在该方法完成执行之前已处理掉。框架在其方法完成执行之前就已处置了控制器。我将方法更改为异步任务,它可以工作。
Foo()
将变为FooAsync()
。