2013-06-20 71 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說我要說什麼。 –