Проблема Отправки письма с вложением

AntonDemin
Дата: 03.02.2010 17:30:34
Всем привет

отправляю письмо с вложением через smtp

MailAddress maFrom = new MailAddress("DataMail@company.ru");

            MailAddress maTo = new MailAddress(mailList);
            MailMessage mm = new MailMessage(maFrom, maTo);
            //MessageBox.Show("Идет Отравка");
            //FileInfo fi = new FileInfo(fileName);
            if (file != null)
                mm.Attachments.Add(new Attachment(file.FullName));
            mm.Subject = subjectMessage;
            mm.Body = bodyMessage;
            //mm.Attachments.Add(new Attachment(fileName));
            SmtpClient sc = new SmtpClient();
            try
            {

                sc.Host = "mailserver";
                sc.Send(mm);
                //Возвращаем истину если все прошло хорошо.
                return true;
            }
            catch (Exception ex)
            {
                TaskHistory.SaveHistory(this, "Ошибка отправки письма ", RunningResult.Fail, ex.Message);
                //throw new Exception("Проблема отправки сообщения " + ex.Message);
                return false;
            }

Письмо уходит, все нормально, но при попытки удалить файл выходит ошибка что файл занят.

Подскажите как освободить файл.

p/s/ Отправка письма идет раз в час, отправка реализована через поток.
skyANA
Дата: 03.02.2010 17:57:04
Вызвать метод Dispose().
            // Create  the file attachment for this e-mail message.
            Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
            ...
            data.Dispose();
AntonDemin
Дата: 03.02.2010 18:25:11
skyANA,

Все равно держит файл.
AntonDemin
Дата: 03.02.2010 18:47:39
AntonDemin,

И ещё вопрос, в чем причина, когда отправляешь письмо таким способом, отжирается 25% процессорной мощности.
дерево
Дата: 03.02.2010 21:09:03
А кто будет письмо удалять после отправки? Объект (письмо) отправлен. Но он не ликвидирован. Вдруг ещё куда надо отправлять? И, соответственно, держит ресурсы. Файл-вложение заблокирован от возможных изменений. Всё правильно. Всё как и в обычной почтовой программе.
AntonDemin
Дата: 03.02.2010 21:39:26
дерево,

а как удалить письмо?
AntonDemin
Дата: 04.02.2010 10:07:34
дерево,

после отправки делаю
mm.Attachments.Clear();
mm.Dispose();
sc.ServicePoint.CloseConnectionGroup(sc.ServicePoint.ConnectionName);                
sc = null;

Файл отпускается, но ресурсы все равно жрутся.
AntonDemin
Дата: 04.02.2010 13:10:48
AntonDemin,

Проблема решилась
После выполнения метода ставлю

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

И все, проблема с отжиранием ресурсов решена.
Sysobjects
Дата: 04.02.2010 14:11:22
А подождать когда это всё само пройдет, никак?

>>Не грози Владимирскому Централу, попивая виски у себя в Лондоне
AntonDemin
Дата: 08.02.2010 10:09:20
Sysobjects,

Слишком долго ждать приходится, за 5 часов его не отпустило.
И какой смысл ждать?