有没有办法在C#中关闭文件?
if(File.Exists(TEMP_FILENAME))
File.Delete(TEMP_FILENAME);
上述代码抱怨该文件已被其他进程使用。
有没有办法检查VS 2008中的打开文件句柄?
答案 0 :(得分:2)
使用应用程序中的文件关闭所有流。
如果错误是由另一个正在运行的应用程序引起的,那么最好只是尝试操作,并处理失败。如果您检查,然后尝试执行操作,则会创建竞争条件。如果删除失败(无论是由于正在使用的文件还是权限),那么只需处理问题。
答案 1 :(得分:1)
我 HAVE 在运行程序时在VS2008中发生这种情况,在打开文件后停止执行,然后再次运行并尝试对文件执行任何操作。当发生这种情况时,我发现修复它的唯一方法是关闭VS并重新打开它,或者杀死* .vshost.exe进程,以便释放文件。我从来没有真正研究过它为什么会发生,但我认为这是因为从VS运行的应用程序的实际进程是* .vshost.exe文件,当你结束程序的执行时它不会关闭。 / p>
另外,为了防止这种情况发生,请始终确保正确关闭文件流,或使用using
块。在通过VS。
如果这不是正在发生的事情,请查看mkus提供的答案,了解如何查看其他应用程序是否锁定了您的文件。
答案 2 :(得分:0)
看看你是否可以获得安全手柄。这又是一种无法管理的东西。如果您可以获得安全手柄,则可能意味着该文件可以免费使用。
请参阅此link