在C#中使用托管C ++包装器时正确使用IDisposable模式

我的C#类创建并使用包装(分配和使用)非托管C ++对象和资源的托管C ++对象。 Managed C ++类使用Destructor和Finalizer正确实现了IDisposable。 因此,看来我的C#类也应该实现IDisposable。 我想要在C#中遵循正确的IDisposable模式。

以下对我不清楚:

  • 在我的C#类的Dispose方法中,我应该将托管C ++对象视为托管还是非托管(因为它们在内部依赖于非托管资源)?

  • 是的,你的C#类也应该实现IDisposable。 它的Dispose()方法应该简单地处理C ++ / CLI对象。 不需要终结器,你已经在你的包装中实现了一个。 你的包装器与包装操作系统资源的许多其他.NET类没有什么不同。

    例如:

    class Test : IDisposable {
        private CppWrapper obj;
        //...
        public void Dispose() {
           if (obj != null) { 
               obj.Dispose();
               obj = null;
           }
        }
    }
    
    链接地址: http://www.djcxy.com/p/54491.html

    上一篇: Correct use of IDisposable pattern when using Managed C++ wrapper in C#

    下一篇: Finalizer and IDisposable