データを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 要求呼び出しで待機すると、要求に応答する前にタスクが終了するまで待機するため、理由もなく応答時間が長くなります。