Этот вопрос о SmtpClient в .NET 3.5.Мне известно об изменении утилизации в .NET 4, но в настоящее время перенос не возможен.
Мне интересно, что произойдет с smtpclient, если вы используете sendasync, а 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.Но что произойдет, если вы создадите два smtpclients и выполните sendasync одновременно (например, два потока вызывают метод SendSomething () одновременно).Может ли он справиться с этим или он создаст проблемы?
Еще один вопрос: в настоящее время в .NET 3.5 клиент smtp не отправляет команду quit после завершения.Это исправлено в .NET 4 с помощью dispose.Однако насколько эта ошибка плоха: вызывает ли она проблемы на серверах smtp, если команда quit не отправлена?Или это то, с чем они должны справиться?