如果类型实现了IDisposable
接口,则应该明确地调用该Dispose
方法(显式或通过using
块).
如果我不调用dispose()会发生什么?
如果你不这样做,析构函数(终结器)负责释放资源; 但是,它有一些缺点:
不确定性:终结器由GC在专用线程上执行.GC决定何时运行它们.如果对象保留了引用(例如,在主应用程序窗口中),则在退出应用程序之前可能不会执行终结器.
开销:除非终结器被抑制,否则GC有一些待破坏对象的待办事项.
危险:如果终结者抛出异常,则认为是致命的并且会使整个应用程序崩溃.