所以我知道在 using 块语句的末尾,调用了 dispose 方法。
如果我使用'using(var a = new Stream()) { a.SomethingThrowsAnException() }'
流是否仍然通过他的处置方法?
我编写了一个实现 IDisposable 的类,它是关键任务,我不会丢失内存中的内容,因此我计划在发生灾难性事件时序列化数据,即我有一个自定义流,如我正在使用的对象。
有什么建议么?
谢谢。
所以我知道在 using 块语句的末尾,调用了 dispose 方法。
如果我使用'using(var a = new Stream()) { a.SomethingThrowsAnException() }'
流是否仍然通过他的处置方法?
我编写了一个实现 IDisposable 的类,它是关键任务,我不会丢失内存中的内容,因此我计划在发生灾难性事件时序列化数据,即我有一个自定义流,如我正在使用的对象。
有什么建议么?
谢谢。
是的。该using
块编译为:
var a = new Stream();
try
{
a.SomethingThrowsAnException();
}
finally
{
a.Dispose();
}
我认为可能有一种情况,finally 子句最终由不同的线程执行(我在这个问题上发布了一个单独的问题)。这可能很重要,因为某些操作(例如 lock.release)需要在执行 lock.acquire 的同一线程上发生。我不确定是什么原因造成的,或者如何延迟线程终止以确保 a.Dispose 发生在执行原始新操作的线程上......