gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:36:08 24 4
gpt4 key购买 nike

我的 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;
}
}
}

关于c# - 在 C# 中使用托管 C++ 包装器时正确使用 IDisposable 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com