4

サーバー コードに多くの非同期メソッドがありますが、待機していない呼び出し元があると思われます。

await が欠落している呼び出しのコードをスキャンする簡単な方法はありますか?

public async Task DomeSomethingAsync() 
{
     var result = await GetResult();
     await StoreResult(result);
}

次に、使用するのを忘れたどこかで await;

public async Task SomeBuggyCode()
{
     await Initialize();
     DoSomethingAsync();  // DOH - Forgot await
}

これらの誤った呼び出しを識別するスマートな方法があることを願っていました。

4

7 に答える 7

8

これは、次のテキストを含むコンパイラ警告 CS4014 として表示されます。

この呼び出しは待機されていないため、呼び出しが完了する前に現在のメソッドの実行が続行されます。呼び出しの結果に「await」演算子を適用することを検討してください。

ドキュメントを見る

したがって、コードをコンパイルするだけです。VS では、エラー リストから関連する場所に移動できる必要があります。

于 2016-05-16T13:10:39.233 に答える
3

それらをすべて見つける最も簡単な方法は、コードをコンパイルすることです。

async を持ち、その中に await を持たない関数は、コンパイラ警告 CS4014を引き起こします。プロジェクトをコンパイルすると、警告のリストに目を通すと、修正が必要なすべての関数が表示されます。

于 2016-05-16T13:11:02.390 に答える
1

メソッドに await が 1 つも含まれていない場合は、出力ウィンドウを確認できます。コンパイル後、This async method lacks 'await' operators and will run synchronously ...警告が表示されます。その警告をダブルクリックすると、関連するメソッドが表示されます。

于 2016-05-16T13:10:52.037 に答える