Fire and Forget approche

Liées à cette réponse,

Si j'ai vraiment envie de "Fire and Forget", une méthode qui retourne une tâche, et (pour la simplicité) supposons que la méthode n'est pas prévu de lancer une quelconque des exceptions. Je peux utiliser la méthode d'extension énumérées dans la réponse:

public static void Forget(this Task task)
{
}

À l'aide de cette approche, si il y a des bugs dans l'action de la Task qui provoquent la levée d'une exception alors quand l'inattendu exception est levée, l'exception sera d'ingestion et de passer inaperçu.

Question: ne Serait-il pas plus approprié dans ce scénario, la méthode d'extension pour être de la forme:

public static async void Forget(this Task task)
{
    await task;
}

De sorte que les erreurs de programmation lever une exception et obtenir de l'escalade (généralement de ramener le processus).

Dans le cas d'une méthode avec des prévu (et ignorable) exceptions près, la méthode aurait besoin pour devenir plus élaboré (en aparté, des suggestions sur la façon de construire une version de cette méthode qui prendrait une liste acceptable et ignorable les types d'exception?)

InformationsquelleAutor Matt Smith | 2014-04-04