SmtpClientの MSDN ドキュメントを確認したところ、サンプル コードが次のようになっていることに気付きました。
client.SendAsync(message, userState);
// More stuff
message.Dispose();
SendAsync の呼び出しが完了するまでにかなりの時間がかかる場合があります。SendAsync呼び出しに続く行でメッセージが破棄された場合、メッセージが有用な状態のままになるのはなぜですか?
さらに、SmtpClientはIDisposableを実装しています。MSDN の例では、より多くのプロパティを次のように形成する必要があります
using (SmtpClient client = new SmtpClient())
{
// Initialize client and create the message
using (MailMessage message = new MailMessage(from, to))
{
client.SendAsync(message, userState);
// More stuff
}
}
したがって、client.SendAsync()がまだ実行されている可能性があるときに message.Dispose() が呼び出されるだけでなく、client.Dispose ()も呼び出されます。
SendAsync( )の呼び出しのほぼ直後にDispose()が呼び出された場合、 SendAsync()の完了のためにクライアントが有用な状態のままになるのはどうしてですか?
それとも、MSDN の例は間違っているのでしょうか?