私が持っているasync
データを返さないメソッドを:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
データを返す別のメソッドからこれを呼び出しています:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
待機MyAsyncMethod()
せずに呼び出すと、Visual Studioで「この呼び出しは待機されないため、現在のメソッドは呼び出しが完了する前に引き続き実行されます」という警告が表示されます。その警告のページには、次のように記載されています。
非同期呼び出しの完了を待たず、呼び出されたメソッドが例外を発生させないことが確実な場合にのみ、警告を抑制することを検討する必要があります。
通話が完了するのを待ちたくないと思います。する必要も時間もありません。しかし、呼び出しがあります例外を発生させます。
私はこの問題に何度か遭遇しましたが、それは共通の解決策が必要な共通の問題であると確信しています。
結果を待たずに非同期メソッドを安全に呼び出すにはどうすればよいですか?
更新:
私が結果を待つことを示唆している人々のために、これは私たちのWebサービス(ASP.NET Web API)上のWebリクエストに応答しているコードです。UIコンテキストで待機すると、UIスレッドは解放されたままになりますが、Web要求の呼び出しで待機すると、要求に応答する前にタスクが完了するのを待機するため、理由もなく応答時間が長くなります。
MyAsyncMethod().Wait()