急!!!!该进程无法访问文件 因为该文件正由另一进程使用
这个是三楼oa的代码。。在邮件发送附件的时候如果单独发不会出错。如果单独发了他再发他一次就出错。。群发就一定会出错。。。     
 出错的提示是:   
 该进程无法访问文件“D:\UDS\SubModule\UnitiveDocument\Mail\AttachFiles\yw135\93\RENZHENG2.GIF”,因为该文件正由另一进程使用。     
 出错代码是:(就在嵌套的foreach里面出的错。大概是file.create   file.copy那里出的错误)   
 try 
 { 
 listmail   =   mailclass.MailSend(mailbody);   //   返回已经发送的邮件ID列表(包括抄送和密抄) 
 //listattfile   =   AttUpload(mailbody.MailReceiverStr.ToString());   //   返回邮件附件数组 
 foreach(string   mailID   in   listmail) 
 {   //   循环发送邮件附件 
 foreach(UDS.Components.MailAttachFile   att   in   upattlist) 
 {   // 处理邮件附件的数据库操作部分      
 Random   TempNameInt   =   new   Random();    
 string   NewDocDirName   =   TempNameInt.Next(100000000).ToString(); 
 Directory.CreateDirectory(Server.MapPath( ". ")+ "\\AttachFiles\\ "+Username+ "\\ "+NewDocDirName); 
 //File.Move(Server.MapPath( ". ")+ "\\ "+att.FileVisualPath   ,Server.MapPath( ". ")+ "\\AttachFiles\\ "+Username+ "\\ "+NewDocDirName+ "\\ "+att.FileName); 
 File.Copy(Server.MapPath( ". ")+ "\\ "+att.FileVisualPath   ,Server.MapPath( ". ")+ "\\AttachFiles\\ "+Username+ "\\ "+NewDocDirName+ "\\ "+att.FileName,true);   
 //Directory.Delete(Server.MapPath( ". ")+ "\\ "+att.FileVisualPath.ToString().Replace(att.FileName, " "),true); 
 att.FileVisualPath   =    "\\AttachFiles\\ "+Username+ "\\ "+NewDocDirName+ "\\ "+att.FileName; 
 mailclass.AttSend(att,Int32.Parse(mailID)); 
 } 
 }   
 if(cblistAttribute.Items[1].Selected&&Request.Form[ "hdnProjectID "].ToString()!= "0 ") 
 { 
       DocProcess(mailbody,upattlist); 
 }   
 Response.Write( " <script   language=javascript> alert( '邮件发送成功! ');if(parent.frames.length==0)   window.close();else   self.location=( 'Index.aspx '); </script>  "); 
 } 
 catch   (Exception   sendex) 
 { 
       UDS.Components.Error.Log(sendex.ToString()); 
       Server.Transfer( "../../Error.aspx "); 
 }     
 希望能讲清楚些,谢谢
------解决方案--------------------被锁定了,正在被访问.是不是有个线程在用它?
------解决方案--------------------估计 是 发送 第一次后 
 没有即时的 释放对于 附件文件的 占用造成的 
 楼主看看 对于附件操作的的时候 发送完毕 比如数据流读取这样的操作应该即时的释放掉 
------解决方案--------------------代码不完整   
 如果你的att 是  Attachment  类 
 那么在发送完毕后 添加 att.Dispose(); 就应该不会再占用该文件
------解决方案--------------------up
------解决方案--------------------up
------解决方案--------------------顶