«Приложение находится в режиме прерывания» C # при использовании throw для всплытия исключения - PullRequest
0 голосов
/ 15 января 2019

Когда я выкидываю исключение, моя функция разбивает его на части и перехватывает в исключении задачи, а не в том случае, если продолжение прерывает код - ниже мой код

public override void Run()
{
    SendRenewalsEmail("ddd@xxx.com", " Email Body from test More", "Test Email from Service another Test");
}

private async void SendRenewalsEmail(string userEmail, string emailBody, string emailSubject)
{
    string replyFromEmailAddress = "renewals@xxx.net";
    string cc = "";
    string bcc = "ccc@xxxx.com";
    SMTPMailHelperAsync sMTPMailHelperAsync = new SMTPMailHelperAsync();
    var x= await sMTPMailHelperAsync.SendEmailAsync(userEmail, cc, bcc, emailSubject, SMTPMailHelperAsync.ProcessTemplate(emailBody, "Renewals.html", emailSubject), replyFromEmailAddress);

    if (x.MailSent)
    {
        throw new Exception("after mail Test more service");
    }
}

и задание, в котором он захвачен

var task=  Task<PluginInstance>.Run<PluginInstance>(() => {
    thisPlugin.LastRunStart = DateTime.Now.ToLocalTime();
    try
    {
        thisPlugin.Plugin.Run();
        thisPlugin.LastRunStatus = Enums.RunStatus.Success;
        thisPlugin.LastRunMessage = "";
    }
    catch (Exception ex)
    {
        thisPlugin.LastRunStatus = Enums.RunStatus.Failed;
        thisPlugin.LastRunMessage = ex.Message;
    }
    thisPlugin.LastRunEnd = DateTime.Now.ToLocalTime();
    return thisPlugin;
});

ListOfTask.Add(task);

Теперь я пытаюсь зафиксировать исключение в исключении Задачи, но это не так. получить ниже исключения enter image description here

1 Ответ

0 голосов
/ 16 января 2019

Вы не должны использовать async void. Это особый случай, зарезервированный только для обработчиков событий. Ваш async метод должен возвращать Task:

private async Task SendRenewalsEmail(…)

Тогда ваш Plugin.Run метод нарушен. Также должно быть async.

Как только вы начинаете с async - await, вы делаете это наверх.

...