この質問は.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サーバーに問題が発生しますか?それとも、これが処理できるべきものなのでしょうか?