应该明确处理libgit2sharp存储库吗?

时间:2015-07-16 05:36:31

标签: git repository dispose using-statement libgit2sharp

是否应明确处理libgit2sharp Repository对象?

如果不总是通过Repository.Dispose()进行清理,可能产生的负面后果是什么?非GC的Repository对象是否可以锁定各种.git文件?

最好将Repository对象包装在using语句中吗?

var localRepo = new Repository("{local repo path}", new RepositoryOptions());
using (localRepo) {
    // checkout
    // etc.
}

1 个答案:

答案 0 :(得分:1)

建议使用Repository处理。

实际上,此类型包含指向非托管资源的指针(本机内存,.git目录下文件句柄的间接指针,...)。

Dispose()将确保正确释放/释放这些资源。

然而,已经实施了一些安全网,呼叫者将忘记这样做。 Repository类型定义了 finalizer ,这将解决此问题。

请记住,此终结程序将运行的那一刻是不可预测的(正如文档所述“在垃圾收集回收之前”)。

因此,建议您自己控制存储库的处理。