间歇性“正在使用的文件”错误

时间:2011-03-18 12:25:27

标签: c# asp.net exception file-io exception-handling

我编写了一些代码,每次程序运行时都会清除目录。我不想打扰枚举文件。如果这是一个不好的方法,请告诉我。

然而,我的主要问题是关于如何处理以下内容:文件夹中的一个文件似乎正在使用,但肯定不是。该程序在ButtonClick事件上运行,它在前四到五次爆炸,但在我确认没有人在服务器上使用该文件后,它运行了。除了我自己之外,只有一个人可以使用它,并且他确认他身边没有任何东西可以触及文件。任何会导致此错误/如何避免它/如何处理它的想法?

我也无法复制错误...

string directory = @"\\server\directory\folder\";
    DirectoryInfo di = new DirectoryInfo(directory);

    if (di.Exists)
        di.Delete(true);

    Directory.CreateDirectory(directory);

2 个答案:

答案 0 :(得分:1)

如果文件正在使用中,那么有人肯定会使用它。 :)

如果您可以访问文件所在的服务器,则可以使用Process Explorer之类的工具来查找已打开文件的进程。

答案 1 :(得分:1)

如果您使用的是Windows XP,这可能有所帮助:http://msdn.microsoft.com/en-us/library/dd997370.aspx#remove_open_handles

只是本页顶部的摘录: “如果您运行的是Windows XP或更早版本,如果有一个打开的句柄保留在其中一个枚举的目录或文件中,则对枚举后的文件或目录执行删除操作可能会失败。”

您也可以使用Unlocker之类的软件来识别锁定文件的过程。