该进程无法访问该文件,因为该文件正由另一个进程使用

时间:2009-05-18 14:01:43

标签: c#

我有一套夜间报道。

有时我得到例外:

  

该进程无法访问该文件,因为该文件正由另一个进程

使用

如何判断文件中包含哪些进程?我认为这是McAfee,但我需要证明这一点。

10 个答案:

答案 0 :(得分:19)

问题是.NET中的MailMessage持有文件附件。我不得不对附件进行处理然后才有效。

答案 1 :(得分:9)

使用Process ExplorerProcess Monitor等工具。

答案 2 :(得分:3)

Attachment data = new Attachment(@"c:\filename");

'send email....

data.Dispose();    

答案 3 :(得分:1)

这里有一些告诉和解锁锁定文件的工具: http://ccollomb.free.fr/unlocker/

答案 4 :(得分:1)

确认。我有一个类似的问题,并做了格雷格所说的。

在发送邮件后的finally块中,我只是把它放在那里,然后它释放了文件句柄:

foreach(Attachment a in message.Attachments) a.Dispose();

答案 5 :(得分:0)

Filemon可能是您正在寻找的工具。

(甚至Process Monitor显然已经取代了FileMon。)

答案 6 :(得分:0)

  1. Process Explorer>查找>找 处理>输入您的文件名。
  2. Unlocker。尝试打开它,如果它 有锁,解锁器会打开和 向您展示锁定它的程序。

答案 7 :(得分:0)

在dispose应该修复它之后

GC.Collect()

答案 8 :(得分:0)

我正在尝试启动Java程序并收到消息。查看任务管理器,当我杀死该进程时,已经有一个Java任务正在运行(循环?),我的进程能够运行。

答案 9 :(得分:0)

我遇到了同样的问题,但在我的情况下,我试图删除Visul Studio 2012中的.mdf文件。没有太多关于错误的信息,以帮助我解决这个问题,所以我来到这里寻求帮助。然后我意识到即使它是一个类似的问题,它也是一个我必须处理的不同过程。

我做的是尝试删除Windows资源管理器中的.mdf文件,然后我给了我一个错误,即SQL Server 2008 R2实际上仍然保留了该文件,即使我删除了数据库。一旦我新了,我所要做的就是关闭SQL Server 2008 R2并尝试再次删除该文件并且它有效。

如果您需要有关如何打开和关闭SQL Server 2008 R2的说明,请参阅下面的链接。

Turn on and off SQL Server