是否应明确处置 libgit2sharp 存储库?
should libgit2sharp Repository be explicitly disposed?
是否应该明确处置 libgit2sharp Repository
对象?
如果不总是通过 Repository.Dispose()
执行清理,可能的负面后果是什么?非 GC 的 Repository
对象能否保留对各种 .git 文件的锁定?
是否最好将 Repository 对象包装在 using
语句中?
var localRepo = new Repository("{local repo path}", new RepositoryOptions());
using (localRepo) {
// checkout
// etc.
}
处置 Repository
是推荐做法。
事实上,这种类型包含指向非托管资源的指针(本机内存、指向 .git
目录下的文件句柄的间接指针,...)。
Dispose()
将确保这些资源正确 freed/released.
但是,已经实施了一些安全网,以防调用者忘记这样做。 Repository
类型定义了一个 finalizer 来处理这个问题。
请记住,这个终结器 运行 的时刻是不可预测的(如文档所述 "before it is reclaimed by garbage collection")。
因此,建议您自己控制存储库的处置。
是否应该明确处置 libgit2sharp Repository
对象?
如果不总是通过 Repository.Dispose()
执行清理,可能的负面后果是什么?非 GC 的 Repository
对象能否保留对各种 .git 文件的锁定?
是否最好将 Repository 对象包装在 using
语句中?
var localRepo = new Repository("{local repo path}", new RepositoryOptions());
using (localRepo) {
// checkout
// etc.
}
处置 Repository
是推荐做法。
事实上,这种类型包含指向非托管资源的指针(本机内存、指向 .git
目录下的文件句柄的间接指针,...)。
Dispose()
将确保这些资源正确 freed/released.
但是,已经实施了一些安全网,以防调用者忘记这样做。 Repository
类型定义了一个 finalizer 来处理这个问题。
请记住,这个终结器 运行 的时刻是不可预测的(如文档所述 "before it is reclaimed by garbage collection")。
因此,建议您自己控制存储库的处置。