J'ai une async
méthode qui ne renvoie aucune donnée:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
J'appelle cela à partir d'une autre méthode qui renvoie des données:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Appeler MyAsyncMethod()
sans l'attendre provoque un avertissement « Parce que cet appel n'est pas attendu, la méthode actuelle continue de s'exécuter avant la fin de l'appel » dans Visual Studio. Sur la page de cet avertissement, il est indiqué:
Vous ne devez envisager de supprimer l'avertissement que si vous êtes sûr de ne pas attendre la fin de l'appel asynchrone et que la méthode appelée ne déclenche aucune exception .
Je suis sûr que je ne veux pas attendre la fin de l'appel; Je n'en ai pas besoin ni le temps. Mais l'appel pourrait soulever des exceptions.
Je suis tombé sur ce problème à plusieurs reprises et je suis sûr que c'est un problème commun qui doit avoir une solution commune.
Comment appeler en toute sécurité une méthode asynchrone sans attendre le résultat?
Mettre à jour:
Pour les personnes suggérant que j'attends juste le résultat, il s'agit d'un code qui répond à une requête Web sur notre service Web (API Web ASP.NET). L'attente dans un contexte d'interface utilisateur laisse le thread d'interface utilisateur libre, mais l'attente dans un appel de demande Web attendra que la tâche se termine avant de répondre à la demande, augmentant ainsi les temps de réponse sans raison.
MyAsyncMethod().Wait()