Задача в С# отменяется сама по себеC#

Место общения программистов C#
Ответить
Anonymous
 Задача в С# отменяется сама по себе

Сообщение Anonymous »

У меня есть код в проекте dll с целью .Net 8.
В моем коде есть асинхронный метод EmailNonError, который вызывается с помощью следующего кода. При выполнении этого кода отправляется электронное письмо, что может произойти только в том случае, если ошибка не произошла, но этот код выдает исключение, сообщающее, что произошла одна или несколько ошибок. (Задача была отменена.). Я не могу понять, почему задача t была отменена сама по себе, когда метод Wait явно блокирует текущий поток до завершения асинхронного метода.
Task t = EmailNonError(message, appName, userName, DateTime.Now);
t.Wait();

Код асинхронного метода EmailNonError показан ниже.
private async Task EmailNonError(string message, string appName, string appUserName, DateTime messageDate)
{
var isMailSent = false;
using SmtpClient client = GetSmtpClient();
await client.SendMailAsync(mailMessage).ContinueWith((i) => isMailSent = i.IsCompletedSuccessfully,
TaskContinuationOptions.OnlyOnRanToCompletion).ContinueWith((i) =>
{
i.Exception?.Handle(ex =>
true); //this will not cause the exception to be thrown again as its considered handled by the Task framework
}, TaskContinuationOptions.OnlyOnFaulted);
}

Я ожидаю отправки электронного письма, что и происходит.
Но если метод Wait не используется, как в следующем коде, проблем нет. Кажется, что это может быть вызвано кодом t.Wait(), но почему это должно быть? Это простой блокирующий вызов, которому не передается ни тайм-аут, ни токен отмены.
EmailNonError(message, appName, userName, DateTime.Now);


Подробнее здесь: https://stackoverflow.com/questions/797 ... -by-itself
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»