C#打开文件时出现问题

时间:2010-01-20 19:18:06

标签: c# file-io

  

可能重复:
  Is there a way to check if a file is in use?

有没有办法在C#中关闭文件?

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

上述代码抱怨该文件已被其他进程使用。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

另外,为了防止这种情况发生,请始终确保正确关闭文件流,或使用using块。在通过VS。

结束执行之前,确保代码的这一部分执行

如果这不是正在发生的事情,请查看mkus提供的答案,了解如何查看其他应用程序是否锁定了您的文件。

答案 2 :(得分:0)

看看你是否可以获得安全手柄。这又是一种无法管理的东西。如果您可以获得安全手柄,则可能意味着该文件可以免费使用。

请参阅此link