将SmtpClient放置在SendComplete中?

| 当我使用SmtpClient \的SendAsync发送电子邮件时,如何正确处置ѭ0实例? 比方说:
MailMessage mail = new System.Net.Mail.MailMessage()
{
   Body = MailBody.ToString(),
   IsBodyHtml = true,
   From = new MailAddress(FromEmail, FromEmailTitle),
   Subject = MailSubject
};
mail.To.Add(new MailAddress(i.Email, \"\"));
SmtpClient sc = new SmtpClient(SmtpServerAddress);
//Add SendAsyncCallback to SendCompleted
sc.SendCompleted += new SendCompletedEventHandler(SendAsyncCallback);
//using SmtpClient to make async send (Should I pass sc or mail into SendAsyncCallback?)
sc.SendAsync(mail, sc);
SendAsyncCallback
方法中,我应该叫
sc.Dispose()
还是
mail.Dispose()
? 我检查了MSDN文档,其中一个示例调用MailMessage.Dispose(),但是此dispose方法是否还会处理
SmtpClient
实例? 非常感谢。     
已邀请:
您应将
MailMessage
SmtpClient
都放置在
SendAsyncCallback
中。 处置MailMessage不会自动处置SmtpClient(因为您可能希望使用同一SmtpClient发送两条消息,并且您不希望在处置第一条消息后立即处置客户端)。     
此示例:从MSDN库文档中仅关闭消息,因此我将在实现中使用它:SmtpClient.SendAsync方法
message.Dispose();
我遇到了此问题中提到的问题,该问题总是被取消发送,因此我要删除我的using {}语句:SmtpClient.SendAsync调用会自动取消 好的,我只是尝试发出message.Dispose(),甚至抛出了错误消息,说由于处理了邮件而无法发送电子邮件。可能是因为我的是asp.net mvc应用程序,而示例是控制台应用程序。无论如何,一旦一切都超出范围,垃圾收集器应该选择这些选项。     

要回复问题请先登录注册