2010-01-20 65 views

回答

2

关闭您的应用程序中使用该文件的任何流。

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

+0

其实该文件是一个图像文件,但我没有对它调用处理方法。我修好了,它开始工作。谢谢Yuliy – Boolean 2010-01-20 20:17:31

+0

你可能还想检查使用情况 - 最好现在把支票放进去,而不是稍后有一个奇怪的错误弹出。 – aronchick 2010-01-20 20:27:15

+0

aronchick:最好是将删除包装在try-catch中,而不是如果(可删除)File.Delete。这样可以避免TOCTTOU(检查到使用时间的时间)错误。 – Yuliy 2010-01-20 21:05:26

1

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

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

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

+0

是的,这也发生在我身上......通常我只是重新启动VS.感谢您停止vshost.exe进程的提示,我会在下次发生时尝试。 – 2010-01-20 19:49:56

+0

我通常在那个时候重新启动VS,通常也是我的电脑,因为我通常每周只重新启动一次,现在是重新启动并获取新鲜咖啡的合适时机......如果我在火车正中当它发生时,它的速度要快得多,只要杀死vshost进程并继续我所做的,而不是因为五分钟等待所有的东西重新出现而出轨。 – 2010-01-20 20:02:13

0

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

请参阅本link