MSDN很好地记录了BCL类型的实例成员的线程安全性,但我从未真正看到过有关如何调用IDisposable
类型的Dispose
方法的信息。
Dispose
方法是否a)对于所有类都保证是线程安全的,b)从不保证是线程安全的,c)对于某些类保证是线程安全的(如果是这样的话,具体在哪里记录了)?
最后,如果Dispose
方法被保证是线程安全的,那么意味着我必须在使用可释放资源的类中的每个实例方法周围放置锁定吗?
顺便说一下:我知道由于.NET的垃圾收集方式(非常积极),类型的终结器应该是线程安全的,并且它们可能会潜在地调用Dispose
方法。然而,我们在这里暂时不考虑这个问题。
Dispose
而不是依赖 Finalizer 线程来处理吗? - Chris O