async
Hiçbir veri döndüren bir yöntem var :
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Bu bazı veri döndürür başka bir yöntemden çağırıyorum:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Arayan MyAsyncMethod()
bir "neden beklemeden bu çağrı beklenen olmadığı için, geçerli yöntem çağrısı tamamlanmadan önce çalışmaya devam görsel stüdyoda uyarı". Bu uyarının sayfasında şunu belirtir:
Uyarıyı, yalnızca eşzamansız çağrının tamamlanmasını beklemek istemediğinizden ve çağrılan yöntemin herhangi bir istisna getirmeyeceğinden eminseniz bastırmayı düşünmelisiniz .
Eminim aramanın tamamlanmasını beklemek istemiyorum; Zamana ihtiyacım yok ya da vaktim yok. Ancak çağrı istisnalar doğurabilir .
Bu sorunu birkaç kez tökezledim ve bunun ortak bir çözümü olması gereken yaygın bir sorun olduğuna eminim.
Sonucu beklemeden nasıl async yöntemini güvenle arayabilirim?
Güncelleme:
Sonucu beklediğimi öne süren insanlar için bu, web servisimizdeki (ASP.NET Web API) bir web isteğine yanıt veren koddur. Bir UI bağlamında beklemek UI iş parçacığını serbest tutar, ancak bir web isteği çağrısında beklemek, göreve yanıt vermeden önce Görev'in bitmesini bekler ve böylece yanıt sürelerini hiçbir sebep olmadan arttırır.
MyAsyncMethod().Wait()