43得票10回答
在IDisposable.Dispose中拦截异常

IDisposable.Dispose 方法中是否有一种方法可以确定是否抛出异常?using (MyWrapper wrapper = new MyWrapper()) { throw new Exception("Bad error."); } 如果在using语句中抛出异常,我希望...

42得票7回答
如何协调使用IDisposable和IoC?

我终于开始理解C#中的IoC和DI,但是有些地方仍然让我感到困惑。我正在使用Unity容器,但我认为这个问题更广泛适用。 使用IoC容器来分发实现IDisposable接口的实例让我很不安!你如何知道是否应该Dispose()它?这个实例可能只是专门为你创建的(因此你应该Dispose())...

42得票6回答
结合foreach和using使用方法

我正在遍历一个ManageObjectCollection。(这是WMI接口的一部分)。 然而,重要的是以下代码行:foreach (ManagementObject result in results) { //code here } 关键在于ManageObject也实现了IDis...

42得票6回答
什么时候应该实现IDisposable接口?

何时实现IDisposable最佳实践? 最佳经验法则是在类中拥有一个托管对象时应当实现它,或者这取决于对象是在类中创建还是仅仅传入。对于根本没有托管对象的类,我是否也应该这样做?

41得票4回答
Unity 2.0及处理IDisposable类型(尤其是使用PerThreadLifetimeManager)

我知道类似的问题已经被问了多次(例如:这里,这里,这里和这里),但这些都是针对早期版本的Unity,答案取决于使用的 LifetimeManager 类。 文档说: Unity使用从 LifetimeManager 基类继承的特定类型(统称为生命周期管理器)来控制它存储对象实例的引用...

41得票12回答
处理.NET IDisposable对象

我使用C#编程,但我一直很懒惰地使用using块来声明实现IDisposable的对象,而你显然总是应该这样做。 然而,我不知道什么是容易的方式来知道我何时犯了错误。 Visual Studio似乎没有以任何方式指示这一点(我有什么遗漏吗?)。 难道我每次声明任何东西都必须检查帮助,并逐渐建立...

41得票4回答
我需要释放SemaphoreSlim吗?

根据文档:"SemaphoreSlim不使用Windows内核信号量"。 是否有特殊资源被SemaphoreSlim使用,使得在不再使用SemaphoreSlim时调用Dispose变得重要?

39得票3回答
当从IDisposable派生并在基类中提供实现时,代码分析CA1063会触发。

我有一些代码会触发Code Analysis警告CA1063: CA1063 : Microsoft.Design : 从“Functionality”实现的接口列表中删除IDisposable,并覆盖基类Dispose实现。 然而,我不确定该怎么修复这个警告。 简单来说,我有一...

39得票6回答
如何为一个实现了IDisposable接口的对象添加线程安全性?

假设有一个实现IDisposable接口并具有一些公共方法的类。 如果该类型的实例在多个线程之间共享,而其中一个线程可能会处理它,那么保证其他线程在已处理后不再尝试使用该实例的最佳方式是什么? 在大多数情况下,在对象被处理后,它的方法必须意识到这一点并抛出ObjectDisposedExce...

38得票5回答
当父类也实现IDisposable时,在子类上实现IDisposable

我有一个父类和一个子类,它们都需要实现 IDisposable 接口。那么在哪里应该使用 virtual 关键字(以及 base.Dispose())呢?当我仅重写 Dispose(bool disposing) 方法时,感觉很奇怪,因为我声明了自己实现了 IDisposable 接口,但没有...