Eu tenho um async
método que não retorna dados:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Estou chamando isso de outro método que retorna alguns dados:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Ligar MyAsyncMethod()
sem aguardar causa um aviso " Como essa chamada não é aguardada, o método atual continua a ser executado antes que a chamada seja concluída " no visual studio. Na página desse aviso, ele declara:
Você deve suprimir o aviso apenas se tiver certeza de que não deseja aguardar a conclusão da chamada assíncrona e de que o método chamado não apresentará exceções .
Tenho certeza de que não quero esperar a ligação terminar; Eu não preciso ou tenho tempo para isso. Mas a ligação pode gerar exceções.
Eu me deparei com esse problema algumas vezes e tenho certeza de que é um problema comum que deve ter uma solução comum.
Como chamo com segurança um método assíncrono sem aguardar o resultado?
Atualizar:
Para as pessoas que sugerem que eu apenas espero o resultado, esse é um código que está respondendo a uma solicitação da Web em nosso serviço da Web (API da Web do ASP.NET). Aguardar em um contexto de interface do usuário mantém o encadeamento da interface do usuário livre, mas aguardar em uma chamada de solicitação da Web aguardará a conclusão da tarefa antes de responder à solicitação, aumentando assim os tempos de resposta sem motivo.
MyAsyncMethod().Wait()