#c_sharp
У меня есть программа, каждые 30 секунд она записывает свои действия в файл .txt.
В backgroundWorker каждые 30 мин этот файл отправляется мне на почту, но после отправки
при попытке записать данные в файл выходит ошибка "этот файл используется в другом потоке".
Пожалуйста помогите решить проблему.
Вот код отправки:
MailMessage mail = new MailMessage("От кого", "Кому","Заголовок", "Текст сообщения");
SmtpClient client = new SmtpClient("smtp.mail.ru");
client.Port = 587;
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(nameDoc); // nameDoc
- переменная содержащая путь к файлу
client.Credentials = new System.Net.NetworkCredential("логин", "пароль");
client.EnableSsl = true;
mail.Attachments.Add(data);
client.Send(mail);
Ответы
Ответ 1
Attachment реализует IDisposable, попробуйте явно его уничтожать: MailMessage mail = new MailMessage("От кого", "Кому","Заголовок", "Текст сообщения"); SmtpClient client = new SmtpClient("smtp.mail.ru"); client.Port = 587; client.Credentials = new System.Net.NetworkCredential("логин", "пароль"); client.EnableSsl = true; using (System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(nameDoc)) { mail.Attachments.Add(data); client.Send(mail); } А лучше уничтожайте целиком MailMessage: SmtpClient client = new SmtpClient("smtp.mail.ru"); client.Port = 587; client.Credentials = new System.Net.NetworkCredential("логин", "пароль"); client.EnableSsl = true; using (var mail = new MailMessage("От кого", "Кому","Заголовок", "Текст сообщения")) { var data = new System.Net.Mail.Attachment(nameDoc)); mail.Attachments.Add(data); client.Send(mail); }
Комментариев нет:
Отправить комментарий