是否应明确处理libgit2sharp Repository
对象?
如果不总是通过Repository.Dispose()
进行清理,可能产生的负面后果是什么?非GC的Repository
对象是否可以锁定各种.git文件?
最好将Repository对象包装在using
语句中吗?
var localRepo = new Repository("{local repo path}", new RepositoryOptions());
using (localRepo) {
// checkout
// etc.
}
答案 0 :(得分:1)
建议使用Repository
处理。
实际上,此类型包含指向非托管资源的指针(本机内存,.git
目录下文件句柄的间接指针,...)。
Dispose()
将确保正确释放/释放这些资源。
然而,已经实施了一些安全网,呼叫者将忘记这样做。 Repository
类型定义了 finalizer ,这将解决此问题。
请记住,此终结程序将运行的那一刻是不可预测的(正如文档所述“在垃圾收集回收之前”)。
因此,建议您自己控制存储库的处理。