2012-01-11 79 views
3

這個問題是關於SmtpClient在.net 3.5。我知道.NET 4中的部署更改,但遷移目前不是一種選擇。SmtpClient SendAsync在.net 3.5

我想知道,如果你使用sendasync和smtpclient超出範圍什麼用smtpclient發生。例如:

public void SendSomething(){ 
    SmtpClient smtp = new SmtpClient(...); 
    smtp.SendCompleted += SendCompletedCallback; 
    smtp.SendAsync(...); 
} 

private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e){ 
... 
} 

如果您發送這樣的事情會發生什麼,對象超出的製法範圍和smtpclient是有點慢,只啓動實際現在就派:這是否給任何問題?或者,smtpclient保護自己不被垃圾收集等?

根據MSDN文檔,你不能做一個sendasync而另一個sendasync還沒有完成。但是,如果創建兩個smtpclient並同時執行sendasync(例如,兩個線程同時調用SendSomething()方法)會發生什麼情況。它可以處理這個問題還是會產生問題?

另一個問題: 目前在.NET 3.5 SMTP客戶端沒有它的完成後發送quit命令。這是在.NET 4中進行處理的。然而,這個bug有多糟糕:如果quit命令沒有被髮送,它是否會導致smtp服務器出現問題?或者這是他們應該能夠處理的事情?

回答

2

只要異步操作正在執行時,SmtpClient通過一種框架或回調委託referencced。
別擔心。

SmtpClient旨意不是海誓山盟干擾。