2012-01-11 18 views
3

この質問は.NET 3.5のSmtpClientについてです。私は.NET 4の変更を処理していることを認識していますが、移行は現時点では選択肢ではありません。SmtpClient SendAsync in .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はまだ完了していません。しかし、2つのsmtpclientを作成して同時にsendasyncを行う場合(たとえば、2つのスレッドが同時にSendSomething()メソッドを呼び出す場合)はどうなりますか?これを処理することはできますか、それとも問題を作りますか?

別の質問: 現在、.NET 3.5では、smtpクライアントは終了後にquitコマンドを送信しません。これは、.NET 4ではdisposeで修正されています。しかし、このバグはどれほど悪いですか:quitコマンドが送信されないと、smtpサーバーに問題が発生しますか?それとも、これが処理できるべきものなのでしょうか?

答えて

2

非同期操作が実行されている限り、SmtpClientはメソッドフレームまたはコールバックデリゲートによって参照されます。
心配しないでください。

複数のは互いに干渉しません。

関連する問題