日期:2014-05-18  浏览次数:20934 次

邮件发送成功后,想移除文件做备份,但是正由另一进程使用,因此该进程无法访问此文件
各位高人,请指点一下小弟啊, 我有个发送邮件程序,可以发送成功的, 但是发送成功之后, 我想把这些文件都移到另外一个目录里,就不行了。 报正由另一进程使用,因此该进程无法访问此文件。 请帮忙看下啊。
 //发送邮件
MailMessage mm = EmailManager.Instance.GetMailMessage(to, cc, txtobj.MAILTITLE, txtobj.MAILNOTE, att);
//路径丢进去
EmailManager.Instance.Send(mm);

 //测试
  string backupreportnamepath = "";

  foreach (string txt in txtobj.MAILATT.Split(','))
  {
  FileInfo fi = new FileInfo(txt);
  //根目录
  string backuprootpath = ConfigurationManager.AppSettings["BackUpPath"];
  //根目录+当天日期文件夹
  string backupdatetimepath = backuprootpath + "\\" + DateTime.Now.ToString("yyyyMMdd");
  //根目录+当天日期文件夹+VendorName文件夹
  string backupvendornamepath = backupdatetimepath + "\\" + fi.Directory.Parent.Name;
  //string backupvendornamepath = backupdatetimepath + "\\" + di.Parent.Name;
  //根目录+当天日期文件夹+VendorName文件夹+当前发送完邮件的这个文件夹
  backupreportnamepath = backupvendornamepath + "\\" + fi.Directory.Name;
  //判断是否有备份主目录
  if (!Directory.Exists(backuprootpath))
  Directory.CreateDirectory(backuprootpath);
  //创建当天生成文件夹
  if (!Directory.Exists(backupdatetimepath))
  Directory.CreateDirectory(backupdatetimepath);
  //判断是否有 根目录+当天日期文件夹+VendorName文件夹
  if (!Directory.Exists(backupvendornamepath))
  Directory.CreateDirectory(backupvendornamepath);
  //创建 根目录+当天日期文件夹+VendorName文件夹+当前发送完邮件的这个文件夹
  if (!Directory.Exists(backupreportnamepath))
  Directory.CreateDirectory(backupreportnamepath);

  fi.CopyTo(backupreportnamepath + "\\" + fi.Name, true);
  fi.Delete();

  }
  FileInfo fitxt = new FileInfo(txtobj.TXTNAME);
  fitxt.CopyTo(backupreportnamepath + "\\" + Path.GetFileName(txtobj.TXTNAME), true);
  fitxt.Delete();
  }

这是为什么啊? 在线等。。。。。

------解决方案--------------------
探讨

引用:

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

强制清空一下看看可不可以


谢谢啊, 这个我试过了 还是不行。。 唉。 我用的是邮件异步发送