Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在包装一些具有一些手动资源处理的本机代码。我希望我的 C# 包装器在不将责任转嫁给客户的情况下处理此问题。这是可能的,还是我不可避免地必须实现 IDisposable 并将责任转嫁给客户端代码?
即是否可以编写自动处理托管资源的类?
如果我说这些资源的确定性处理不是问题,我只关心它们被安全释放怎么办?我很高兴让 GC 通过终结器安排他们的发布。
这显然是终结器的设计目的。写一个来释放非托管资源,CLR会在对象被垃圾回收后自动调用它。您当然可以实现 IDisposable 以使其尽早发布,但这不是必需的。如果资源分配没有影响,可以跳过。您描述的类型与 COM 对象的类型相匹配。谁的 .NET 包装器也没有实现 IDisposable。
密切注意程序的基本资源使用情况,以确保这不是问题。如果您对正在使用的实际资源不够了解,可能很难判断。