2013-06-20 72 views
0

当我们的应用程序发生任何错误时,我有如下的方法来发送电子邮件。 [是。通过邮件发送错误是一个单独的讨论]异步发送邮件

public void EmailErrorDetails() 
{ 
    string strBodyMessage = string.Empty; 
    strBodyMessage = GetEmailBodyMessage(); 

    if (strBodyMessage != String.Empty) 
    { 
     MailMessage emailMessage = new MailMessage(); 
     emailMessage.From = new MailAddress(Constants.MailFrom); 
     emailMessage.To.Add(Constants.MailTo); 
     emailMessage.Subject = Constants.EmailSubject; 
     emailMessage.IsBodyHtml = true; 
     emailMessage.Body = string.Format(strBodyMessage); 

     SmtpClient client = new SmtpClient(); 
     client.UseDefaultCredentials = false; 
     client.DeliveryMethod = SmtpDeliveryMethod.Network; 
     client.EnableSsl = true; 
     client.Host = Constants.EmailHostAddress; 
     client.Port = Convert.ToInt32(Constants.EmailPort); 
     client.Credentials = new NetworkCredential(Constants.MailFrom, Constants.MailFromPassword); 
     client.Send(emailMessage); 


    } 
} 

我想让这个方法在后台异步运行,并执行前进。

我读到[client.Send]本身使用异步调用。那么是否有任何好处使上述方法调用异步方式,如果是的话我怎么能实现这一点?

回答

1

,我读了client.Send使用异步调用

假设client实际上是一个SmtpClient,然后Send使用异步调用。 SmtpClient具有异步发送电子邮件的特定方法,它被称为SendAsync - 如果您想在后台发送电子邮件,请使用此方法而不是Send

+0

yes..client.'SendAsync(emailMessage);'..是一种方式..但是有更多的好处。如果我使用委托使用异步方法调用? – James

+0

@詹姆斯“*有更多的好处*” - 究竟是什么?你不清楚你想知道什么。 – James

+1

你刚刚打败了我,@詹姆斯。 +1说我要说什么。 –