可能重复:
Is there a way to check if a file is in use?C#问题与打开的文件
有没有办法关闭在C#中的文件?
if(File.Exists(TEMP_FILENAME))
File.Delete(TEMP_FILENAME);
上述代码抱怨文件已被其他进程使用。
有没有办法检查VS 2008中打开的文件句柄?
可能重复:
Is there a way to check if a file is in use?C#问题与打开的文件
有没有办法关闭在C#中的文件?
if(File.Exists(TEMP_FILENAME))
File.Delete(TEMP_FILENAME);
上述代码抱怨文件已被其他进程使用。
有没有办法检查VS 2008中打开的文件句柄?
关闭您的应用程序中使用该文件的任何流。
如果错误是由于另一个正在运行的应用程序引起的,最好只尝试操作并处理失败。如果您检查,然后尝试执行操作,您创建竞争条件。如果删除失败(无论是因为正在使用的文件还是权限),那么只需处理该问题即可。
我有在VS2008中发生这种情况时运行一个程序,一旦我打开一个文件,停止执行,然后再次运行,并试图对文件做任何事情。当发生这种情况时,我发现修复它的唯一方法是关闭VS并重新打开它,或者杀死* .vshost.exe进程以释放文件。我从来没有真正考虑过它为什么会发生,但我认为这是因为从VS运行为应用程序的实际进程是* .vshost.exe文件,当您结束程序的执行时它不会关闭。
另外,为防止这种情况发生,请务必确保正确关闭文件流或使用using
块。确保在通过VS结束执行之前执行代码的这部分内容。
如果不是发生了什么情况,请检查mkus提供的答案,了解如何查看其他应用程序是否锁定了您的文件。
是的,这也发生在我身上......通常我只是重新启动VS.感谢您停止vshost.exe进程的提示,我会在下次发生时尝试。 – 2010-01-20 19:49:56
我通常在那个时候重新启动VS,通常也是我的电脑,因为我通常每周只重新启动一次,现在是重新启动并获取新鲜咖啡的合适时机......如果我在火车正中当它发生时,它的速度要快得多,只要杀死vshost进程并继续我所做的,而不是因为五分钟等待所有的东西重新出现而出轨。 – 2010-01-20 20:02:13
看看你是否可以获得安全处理。这又是非管理的东西。如果您可以获得安全处理,则可能意味着该文件可以免费使用。
请参阅本link
你能张贴在这里为您带来的代码,可能会有线索,一个更大的问题。 – gingerbreadboy 2010-01-20 19:21:07