Ce n'est pas un doublon de "Comment appeler en toute sécurité une méthode async en C # sans attendre" .
Comment supprimer gentiment l'avertissement suivant?
avertissement CS4014: Cet appel n'étant pas attendu, l'exécution de la méthode actuelle se poursuit avant la fin de l'appel. Envisagez d'appliquer l'opérateur 'await' au résultat de l'appel.
Un exemple simple:
static async Task WorkAsync()
{
await Task.Delay(1000);
Console.WriteLine("Done!");
}
static async Task StartWorkAsync()
{
WorkAsync(); // I want fire-and-forget
// more unrelated async/await stuff here, e.g.:
// ...
await Task.Delay(2000);
}
Ce que j'ai essayé et je n'ai pas aimé:
static async Task StartWorkAsync()
{
#pragma warning disable 4014
WorkAsync(); // I want fire-and-forget here
#pragma warning restore 4014
// ...
}
static async Task StartWorkAsync()
{
var ignoreMe = WorkAsync(); // I want fire-and-forget here
// ...
}
Mis à jour , puisque la réponse acceptée d'origine a été modifiée, j'ai changé la réponse acceptée par celle utilisant les rejets C # 7.0 , car je ne pense pas que ce ContinueWith
soit approprié ici. Chaque fois que j'ai besoin de consigner des exceptions pour des opérations d'incendie et d'oubli, j'utilise une approche plus élaborée proposée par Stephen Cleary ici .
async void
méthode d'assistance.
#pragma
n'est pas gentil?