尝试删除文件时避免冻结

时间:2017-10-04 13:57:34

标签: c# file-io

我有一个应用程序,我们通过将更改写入单独的文件,然后删除原始文件并重命名新文件,为我们的应用程序替换“artproj”文件。它通常运行良好,但有时,它会被“卡住”删除,无处可去,在调试时无法在Visual Studio中中止调用。查看Process Explorer,看起来我的应用程序在此时具有文件句柄,但 explorer.exe 也是如此。实际上,当我退出应用程序时, explorer.exe 上仍然有三个具有相同进程ID的句柄。我只能猜测这就是为什么使用FileInfo.Delete的删除不会通过。

这是删除程序:

private static Exception InternalSafeKill(FileInfo TargetFile)
{
    try
    {
        TargetFile.Attributes = FileAttributes.Normal;
        TargetFile.Delete();
        return null;
    }
    catch (Exception ex)
    {
        return ex;
    }
}

有没有办法避免这种冲突?在通话前检测它?在检测到时以某种方式安全地逃脱它?

0 个答案:

没有答案