- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
SmtpClient Class指出实例成员不是线程安全的。如果对 Send 进行并发调用,则可以看到这一点或 SendAsync .如果第一次调用尚未完成,这两种方法都将在第二次调用时抛出 InvalidOperationException。
方法SendMailAsync .NET 4.5 中引入的 未将 InvalidOperationException 列为抛出的异常。新的 .NET 4.5 方法是否实现某种排队? Reflector 无法阐明此类的实现细节,因此我假设它已在 native 方法中实现。
多个线程能否在 SMTP 客户端的共享实例上安全地调用 SendMessageAsync 方法?
最佳答案
我不确定为什么使用 Reflector 对您不起作用。如果我反编译它,我会看到以下代码:
[HostProtection(SecurityAction.LinkDemand, ExternalThreading=true)]
public Task SendMailAsync(MailMessage message)
{
TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
SendCompletedEventHandler handler = null;
handler = delegate (object sender, AsyncCompletedEventArgs e) {
this.HandleCompletion(tcs, e, handler);
};
this.SendCompleted += handler;
try
{
this.SendAsync(message, tcs);
}
catch
{
this.SendCompleted -= handler;
throw;
}
return tcs.Task;
}
如您所见,它是 SendAsync()
的简单 TAP 包装器。如果 SendAsync()
抛出异常,SendMailAsync()
只会重新抛出它。
因此,结论是 SendMailAsync()
不是线程安全的,并且它的异常未被充分记录。
关于c# - SmtpClient.SendMailAsync 方法线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888279/
我正在尝试根据 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
我是一名优秀的程序员,十分优秀!