Связанный с этим ответом,
Если я действительно хочу "Огонь и забыть" метод, возвращающий задачу, и (для простоты) допустим, что метод не должен бросать какие-либо исключения. Я могу использовать метод расширения, указанный в ответе:
public static void Forget(this Task task)
{
}
Используя этот подход, если есть ошибки в действии Task
, которые вызывают исключение, которое вызывается, тогда, когда возникает неожиданное исключение, исключение будет проглочено и останется незамеченным.
Вопрос: Не было бы более уместным в этом сценарии для того, чтобы метод расширения имел вид:
public static async void Forget(this Task task)
{
await task;
}
Так что ошибки программирования вызывают исключение и получают эскалацию (обычно приводящий к снижению процесса).
В случае метода с ожидаемыми (и неосведомленными) исключениями, метод должен стать более сложным (в качестве исключения, любые предложения о том, как построить версию этого метода, которая будет принимать список приемлемых и неосведомленных типы исключений?)