- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了async-await
功能的文档,但仍然对如何构造调用SmtpClient.SendMailAsync()<的
方法。async-await
代码感到非常困惑
我应该如何重写代码才能正确使用 async-await
?
目前,我的代码如下所示:
系统定期调用 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();
}
最佳答案
您还应该将 PrivateSignal
设置为 async
,其中包括用 async
标记它并返回 Task
:
public override async Task PrivateSignalAsync(IEventInformation ev)
{
TagEvent tag = (TagEvent)ev;
try
{
await smptClient.SendMailAsync(CaptureRC.SmptFromEmailAddr, ToEmails, CaptureRC.EmailSubject, "seen moving" + tag.ToString());
}
catch (Exception ex)
{
// ...
}
}
不过,您似乎无法这样做,因为 PrivateSignal
正在覆盖已经同步的方法。如果您可以更改基本方法以返回 Task
那么您应该这样做,但如果您不能,则根本不要在该方法内使用 async
因为阻塞异步
可能会导致死锁和其他不需要的结果:
public override void PrivateSignal(IEventInformation ev)
{
TagEvent tag = (TagEvent)ev;
try
{
smptClient.SendMail(CaptureRC.SmptFromEmailAddr, ToEmails, CaptureRC.EmailSubject, "seen moving" + tag.ToString());
}
catch (Exception ex)
{
// ...
}
}
关于c# - 对如何构造调用 SmtpClient.SendMailAsync() 的异步/等待代码感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442967/
我正在尝试根据 VS2013 项目模板中的示例 AccountController 为 ASP.NET MVC5 网站设置电子邮件确认。我已经使用 SmtpClient 实现了 IIdentityMe
我在 .net 4.5 中有一个 C# wcf Windows 服务,它每天向大约 1000 个不同的客户发送电子邮件。我想尝试使用我在 SO 上找到的这段代码异步发送电子邮件,但我应该如何包装它以捕
我正在通过 C# 的 SmtpClient.SendMailAsync 发送邮件,但我遇到了一些非常奇怪的行为。 当我调用 SendMailAsync 时,电子邮件已发送 - 我每次都会收到。但是,我
SmtpClient Class指出实例成员不是线程安全的。如果对 Send 进行并发调用,则可以看到这一点或 SendAsync .如果第一次调用尚未完成,这两种方法都将在第二次调用时抛出 Inva
我正在尝试使用 SmtpClient.SendMailAsync 方法发送大量电子邮件。这是我从简单控制台应用程序调用的测试方法。 static void Main(string[] args
我不明白调用 SendMailAsync 的这两种实现之间的区别。大多数情况下,对于第一个,我会收到 TaskCanceledException,但对于第二个,一切都按预期进行。 我认为这两种消费方法
我正在尝试从我的 MVC 应用程序发送电子邮件,当我使用 .Send() 方法时它发送正常,但需要一段时间才能返回,所以我想使用 .SendMailAsync() 函数,但我收到了执行期间出现以下错误
我阅读了async-await功能的文档,但仍然对如何构造调用SmtpClient.SendMailAsync() { try { awa
我正在尝试通过 C# 中的 ASP MVC Web 应用程序设置 Office 365 集成,为此我使用了 Outlook Mail REST API(客户端版本)。我一直在这里使用 API 引用:h
我是一名优秀的程序员,十分优秀!