Saya memiliki async
metode yang tidak mengembalikan data:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Saya memanggil ini dari metode lain yang mengembalikan beberapa data:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Memanggil MyAsyncMethod()
tanpa menunggu menyebabkan " Karena panggilan ini tidak ditunggu, metode saat ini terus berjalan sebelum panggilan selesai " peringatan di studio visual. Pada halaman peringatan itu disebutkan:
Anda harus mempertimbangkan untuk menekan peringatan hanya jika Anda yakin tidak ingin menunggu panggilan tidak sinkron selesai dan bahwa metode yang dipanggil tidak akan memunculkan pengecualian .
Saya yakin saya tidak ingin menunggu sampai panggilan selesai; Saya tidak perlu atau punya waktu untuk itu. Tapi panggilan itu bisa menimbulkan pengecualian.
Saya telah menemukan masalah ini beberapa kali dan saya yakin itu adalah masalah umum yang harus memiliki solusi bersama.
Bagaimana saya memanggil metode async dengan aman tanpa menunggu hasilnya?
Memperbarui:
Bagi orang yang menyarankan agar saya menunggu hasilnya, ini adalah kode yang merespons permintaan web pada layanan web kami (ASP.NET Web API). Menunggu dalam konteks UI membuat utas UI tetap bebas, tetapi menunggu dalam panggilan permintaan web akan menunggu Tugas selesai sebelum menanggapi permintaan, sehingga meningkatkan waktu respons tanpa alasan.
MyAsyncMethod().Wait()