Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#打开文件的问题_C#_File Io - Fatal编程技术网

C#打开文件的问题

C#打开文件的问题,c#,file-io,C#,File Io,可能重复: 有没有办法用C#关闭文件 上面的代码抱怨该文件已被另一个进程使用 是否有方法检查VS 2008中打开的文件句柄?关闭应用程序中使用该文件的所有流 如果错误是由另一个正在运行的应用程序引起的,最好尝试该操作,并处理故障。如果您选中,然后尝试执行该操作,则会创建竞争条件。如果删除失败(无论是由于文件正在使用还是由于权限),只需处理该问题。我在VS2008中运行程序时遇到过这种情况,在打开文件后停止执行,然后再次运行并尝试对该文件执行任何操作。当这种情况发生时,我发现修复它的唯一方法是关

可能重复:

有没有办法用C#关闭文件

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


是否有方法检查VS 2008中打开的文件句柄?

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

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

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

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


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

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


参考这篇

你能把你带到这里的代码贴出来吗,可能有更大问题的线索。是的,这也发生在我身上。。。通常我只是重新启动VS。感谢停止vshost.exe进程的提示,下次我会尝试。我通常在那一点上重新启动VS,通常我的计算机也是如此,因为我通常每周只重新启动一次,所以现在是重新启动和喝新鲜咖啡的好时机。。。如果我恰好在我的思路中,当它发生时,杀死VSHOST进程并继续我正在做的事情要快得多,而不是在五分钟等待我所有的东西回来的时候脱轨。实际上,这个文件是一个图像文件,但是我没有在它上面调用Debug方法。我修好了,它开始工作了。谢谢你Yully你可能还想检查使用情况-最好现在就签入,而不是以后弹出一个奇怪的错误。aronchick:最好用try catch包装删除,而不是if(can delete)File.delete。这样可以避免TOCTTOU(检查时间到使用时间)错误。
if(File.Exists(TEMP_FILENAME))
            File.Delete(TEMP_FILENAME);