どんなシナリオを使いたいのか
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()
。