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