C#打开文件时出现问题

C# Problem with opened files

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Is there a way to check if a file is in use?

有没有办法关闭C中的文件?

1
2
if(File.Exists(TEMP_FILENAME))
            File.Delete(TEMP_FILENAME);

上面的代码抱怨文件已经被另一个进程使用。

有没有办法在vs 2008中检查打开的文件句柄?


使用应用程序中的文件关闭所有流。

如果错误是由于另一个正在运行的应用程序造成的,那么最好尝试操作并处理故障。如果检查,然后尝试执行该操作,将创建一个竞争条件。如果删除失败(无论是由于文件正在使用还是权限),只需处理问题。


我在VS2008中运行程序时遇到过这种情况,在打开文件后停止执行,然后再次运行并尝试对该文件执行任何操作。当这种情况发生时,我找到的唯一解决方法是关闭并重新打开vs,或者终止*.vshost.exe进程以释放文件。我从来没有真正研究过为什么会发生这种情况,但我认为这是因为实际的进程从VS作为你的应用程序运行是*.vshost.exe文件,当你结束程序的执行时它不会关闭。

此外,为了防止这种情况发生,请务必正确关闭文件流,或者使用using块。确保您的代码的这一部分在通过VS结束执行之前执行。

如果不是这样,请检查mkus提供的答案,了解如何查看其他应用程序是否锁定了您的文件。


看看你能不能得到一个安全手柄。这又是不受管理的东西。如果您可以获得一个安全句柄,这可能意味着该文件是免费使用的。

参考此链接