У мене є 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()
не чекаючи, викликає попередження " Оскільки цього дзвінка не очікується, поточний метод продовжує працювати до завершення виклику " у візуальній студії. На сторінці цього попередження зазначено:
Вам слід розглянути можливість придушення попередження лише в тому випадку, якщо ви впевнені, що не хочете чекати завершення асинхронного виклику і що викликаний метод не створює жодних винятків .
Я впевнений, що не хочу чекати завершення дзвінка; Мені не потрібно і не маю часу на це. Але виклик може спричинити винятки.
Я кілька разів натрапив на цю проблему і впевнений, що це загальна проблема, яка повинна мати спільне рішення.
Як я безпечно викликати метод асинхронізації, не чекаючи результату?
Оновлення:
Для людей, які підказують, що я просто чекаю результату, це код, який відповідає на веб-запит нашої веб-служби (ASP.NET Web API). Очікування в контексті користувальницького інтерфейсу забезпечує потік користувальницького інтерфейсу безкоштовним, але очікування у виклику веб-запиту зачекає завершення завдання перед тим, як відповісти на запит, тим самим збільшуючи час відповіді без причини.
MyAsyncMethod().Wait()