我正在包装一些具有一些手动资源处理的本机代码。我希望我的C#包装器能够处理这个问题,而不会将责任交给客户端。这是可能的,还是我不可避免地要实现IDisposable并将责任传递给客户代码?
即是可以自动编写处理托管资源的类吗?
如果我说这些资源的确定性处理不是一个问题,我只关心它们是安全释放的,那该怎么办?我很高兴让GC安排通过终结器发布。
答案 0 :(得分:1)
这显然是终结者的目的。写一个来释放非托管资源,CLR会在对象被垃圾收集后自动调用它。您当然可以实现IDisposable以尽早发布它,但这不是必需的。如果资源分配没有影响,可以跳过。您描述的类型与COM对象的类型匹配。谁的.NET包装器也没有实现IDisposable。
密切关注程序的基本资源使用情况,以确保这不是问题。很难判断你对实际使用的资源是否不够充分。