急!!!!该进程无法访问文件 因为该文件正由另一进程使用
这个是三楼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
------解决方案--------------------顶