的異步/等待代碼我讀async-await
功能的文檔,但仍然高度混淆如何構造async-await
代碼,調用SmtpClient.SendMailAsync()
方法。
我應該如何重寫代碼才能正確使用async-await
?困惑於如何構造調用SmtpClient.SendMailAsync()
目前,我的代碼如下所示:
定期由系統調用PrivateSignal
發送電子郵件通知。
public override void PrivateSignal(IEventInformation ev)
{
TagEvent tag = (TagEvent)ev;
Task.Run(async() =>
{
try
{
await smptClient.SendMailAsync(CaptureRC.SmptFromEmailAddr,
ToEmails,
CaptureRC.EmailSubject,
"seen moving" + tag.ToString());
}
catch (AggregateException ex)
{
//TODO handle the error
//TODO log the erros, along with
}
}).Wait();
}
smptClient.SendMail()不應拋出AggregateException。 AggregateException是TPL(任務,任務等)方法拋出的。 –
2015-02-10 22:30:45
@TimGoyer true。更新。 – i3arnon 2015-02-10 22:32:08
讓我們假設我可以將代碼更改爲異步,就像您擁有它的方式一樣。 1.如何從其他函數調用此方法? '等待PrivateSignal(標籤)'或'Task.Run(()=> PrivateSignal(標籤)).Await()'? 2.調用方法是否也是「異步」的? – newprint 2015-02-10 23:57:14