Abordagem Fire and Forget
Relacionado aesta resposta,
Se realmente quero "disparar e esquecer" um método que retorna uma tarefa e (por simplicidade), vamos assumir que não se espera que o método gere nenhuma exceção. Eu posso usar o método de extensão listado na resposta:
public static void Forget(this Task task)
{
}
Usando esta abordagem, se houver erros em ação doTask
que causam uma exceção, quando a exceção inesperada é lançada, a exceção será engolida e passará despercebida.
Pergunta, questão: Não seria mais apropriado nesse cenário que o método de extensão tenha o formato:
public static async void Forget(this Task task)
{
await task;
}
Para que os erros de programação gerem uma exceção e sejam escalados (geralmente interrompendo o processo).
No caso de um método com exceções esperadas (e ignoráveis), o método precisaria se tornar mais elaborado (como um aparte, alguma sugestão sobre como construir uma versão desse método que levaria uma lista de tipos de exceção aceitáveis e ignoráveis? )