各位高人,请指点一下小弟啊, 我有个发送邮件程序,可以发送成功的, 但是发送成功之后, 我想把这些文件都移到另外一个目录里,就不行了。 报正由另一进程使用,因此该进程无法访问此文件。 请帮忙看下啊。
 //发送邮件
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();
                    }这是为什么啊? 在线等。。

解决方案 »

  1.   

    这不是很明白么。
    邮件还没发送完,而且你发送完后要释放使用的流线程。
    才能CopyTo文件。
      

  2.   

    http://www.cnblogs.com/BudEasyCode/archive/2012/02/29/2372703.html 你可以看下这个,是一个QQ群发器  有源码,希望可以帮助到你~~
      

  3.   

    我用的是异步发送,  它有一个事件 就是发送完后 才执行的方法, 现在是发送和复制文件都OK了, 每次到最后要删除文件就删除不了了啊。    
    就报进程被占用
    fi.CopyTo(backupreportnamepath + "\\" + fi.Name, true);
    fi.Delete();CopyTo方法是可以了,  Delete 就不行了
      

  4.   

    fi释放资源。
    File.Delete(" URL"); 
      

  5.   


    显式释放.
    用对象的Dispose()方法.
      

  6.   

    fi 里面是 没有Dispose() 这个方法啊
      

  7.   

    使用System.Diagnostics.Process.GetProcesses()
    强制杀死进程
      

  8.   

    GC.Collect();
    GC.WaitForPendingFinalizers();强制清空一下看看可不可以
      

  9.   

    这个网站 www.wform.net 中提供的dll文件很棒,我用了用,在做数据库程序的时候几乎不用写代码了,很奇妙啊!有谁知道它是怎么实现的吗?