#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); }
Комментариев нет:
Отправить комментарий