2017-02-22 23 views
1

mail.Dispose()は、最後にmail.Dispose()と書いた場合、SendMailAsync()がコールを完了した後でも常に呼び出されますか?たとえば、Post()を1000回呼び出すと、各電子メールの送信後に処分を呼び出す必要があります。あなたが別の使用に間に合わメールをラップすることができ電子メールを非同期で送信して処理する

public async Task Post(NotificationData notification) 
{ 
    MailMessage mail = new MailMessage(); 
    mail.To.Add(new MailAddress(notification.Email)); 
    mail.Subject = notification.Subject; 
    mail.Body = notification.Body; 

    using (SmtpClient smtp = new SmtpClient()) 
    { 
     smtp.SendCompleted += new SendCompletedEventHandler(SmtpClient_SendCompleted); 
     await smtp.SendMailAsync(mail); 
    } 

    mail.Dispose(); 
} 
+3

は、ここに私のコードです。 –

+0

あなたのコードでは見えない添付ファイル*がメールメッセージにない限り、明示的にDisposeを呼び出す必要はありません。 – Win

+0

@ DanielA.White私は、文を使用してMailMessageを入れてポストを更新し、そこにSmtpClientを配置します。それは正しいでしょうか? –

答えて

1
public async Task Post(NotificationData notification) 
{ 
    using (MailMessage mail = new MailMessage()) 
    { 
     mail.To.Add(new MailAddress(notification.Email)); 
     mail.Subject = notification.Subject; 
     mail.Body = notification.Body; 

     using (SmtpClient smtp = new SmtpClient()) 
     { 
      smtp.SendCompleted += new SendCompletedEventHandler(SmtpClient_SendCompleted); 
      await smtp.SendMailAsync(mail); 
     } 
    } 
} 
関連する問題