我不确定为什么使用 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;
}
如您所见,它是一个简单的 TAP 包装器,用于SendAsync()
. 如果SendAsync()
抛出异常,SendMailAsync()
只需重新抛出它。
因此,结论是它SendMailAsync()
不是线程安全的,并且它的异常没有被充分记录。