2016-05-16 12 views
1

私のサーバコードには多くの非同期メソッドがありますが、私は呼び出し側が待っていないと思われます。解決策が見つからない場合は、

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

次に、私はawaitを使用するのを忘れてしまった。

私は、これらのエラーのある呼び出しを識別するスマートな方法があると考えていました。

+0

@Frode:Roslynは具体的に必要ですか?またはそれらを見つけるための合理的な方法は問題ありませんか?あなたがロザリンを必要としない場合は、チャールズのような回答が良いことを明確にする質問からそれを削除してください。 – quetzalcoatl

+0

お役立ち情報resharperを長時間使っていると、何が行われているのか、何ができていないのかがわかり始めます:) – Evk

答えて

6

これは、テキストとコンパイラの警告CS4014として表示する必要があります。呼び出しが完了する前に、この呼び出しを待つされていないので

、現在のメソッドの実行が継続されます。呼び出しの結果に 'await'演算子を適用することを検討してください。

だから、あなたがする必要がある必要があり、すべてのコードをコンパイルしているthe documentation

を参照してください。 VSでは、エラーリストから関連する場所にナビゲートすることができます。

+1

これは明らかに最良の方法です。私がこの警告を出さなかったのは、Taskを返すが非同期ではない関数があったからです。何らかの理由でTask.CompletedTaskが返されました。今は非同期にしました。 – Frode

1

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

2

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

非同期であるが内部で待たされていない関数は、compiler warning CS4014になります。プロジェクトの外観を警告リストでコンパイルすると、修正する必要があるすべての関数が表示されます。

1

本当に警告が表示されますが、それらの機能を待たずにアプリケーションが動作していても、待っていない可能性があります。結果のタスクを変数に割り当ててみましょう。

これは明らかに決定することです。

関連する問題