我已经多次遇到这个问题,直到现在还没有找到令人满意的解决方案(如果需要15分钟的话,重新启动计算机会非常烦人...):
使用文件编程时,必须使用文件流。他们的问题是(至少在C#中)他们需要再次释放文件才能从其他地方访问它。因为在大多数情况下这当然是一个好主意,在我编程和调试过程中忘记释放文件或者程序在流可以关闭之前崩溃了几次,我发生了几次。
有没有办法使用Windows功能或类似的东西找到并杀死这些流?在C#以及C ++(或C,我不再确定)中出现类似的问题。
从我读到的答案中,当正确处理流时不应该发生这种情况。但是,如果我是愚蠢地处理它并且流没有正确关闭(因为什么原因)怎么办?有没有办法在PC运行时解决这个问题?
答案 0 :(得分:4)
这应该不是问题。
当您的应用程序正常运行时,您使用using
块来确保正确释放这些非托管资源。这对于实现IDisposable
接口的任何对象都是必需的。
如果失败,操作系统将跳入并保存您的培根。操作系统会自动释放进程在终止时打开的所有文件句柄,因此即使您的应用程序崩溃,也没有问题。
答案 1 :(得分:3)
IDisposable
接口(包括Streams)的 任何应始终包含在using
块中或成为一个类反过来实现IDisposable
本身(而新的Dispose()
方法也会调用成员的Dispose()
方法)。应该有一个编译器警告,imo。
执行此操作,您的文件锁将正确释放。