我正在努力解决这个问题。根据这一页 https://msdn.microsoft.com/en-us/library/yh598w02.aspx on Using
声明:
using 语句可确保即使在调用对象方法时发生异常,也会调用 Dispose。您可以通过将对象放入 try 块中,然后在 finally 块中调用 Dispose 来实现相同的结果;事实上,这就是编译器翻译 using 语句的方式。
But on 这一页 https://msdn.microsoft.com/en-us/library/zwc8s4fz.aspx about Try-Finally
阻止它指出:
在已处理的异常中,保证运行关联的finally 块。但是,如果异常未处理,则finally块的执行取决于异常展开操作的触发方式。
那么如何才能Using
如果语句转换为异常,则保证在发生异常时调用 Dispose 方法Try-Finally
那不保证调用finally语句吗?
它的行为确实像 try/finally - 所以如果应用程序终止,资源可能不会被处置......这通常是好的,因为通常处置是为了释放进程持有的资源......并且操作系统会整理这些资源无论如何,进程死亡。 (这并不是说Dispose
method won't被称为……和正常的一样try
/finally
.)
显然,如果你的文件系统上有一个“锁定文件”或类似的东西,那将是一个问题 - 但在断电等情况下你也会遇到同样的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)