查看SmtpClient的 MSDN 文档,我注意到示例代码如下所示:
client.SendAsync(message, userState);
// More stuff
message.Dispose();
对 SendAsync 的调用可能需要很长时间才能完成。如果消息被放置在SendAsync调用之后的行上,它是如何保持有用状态的?
此外,SmtpClient实现了 IDisposable。MSDN 示例应该形成更多的属性,例如
using (SmtpClient client = new SmtpClient())
{
// Initialize client and create the message
using (MailMessage message = new MailMessage(from, to))
{
client.SendAsync(message, userState);
// More stuff
}
}
因此,当client.SendAsync()可能仍在执行时,不仅会调用message.Dispose() ,而且还会调用client.Dispose()。
如果在调用SendAsync()之后几乎立即调用Dispose() ,客户端如何保持在完成SendAsync()的有用状态?
或者,MSDN 示例是错误的吗?