LibGit2Sharp:如何进行任务异步

时间:2019-03-06 15:22:23

标签: asp.net-core async-await libgit2sharp

嗨,我已经开始将软件包用于一些非常简单的任务,主要是克隆Git-Wiki存储库,然后在需要时从服务器提取更改。

现在我看不到任何与任务异步(TAP)模式相对应的方法。同样在文档中,我找不到任何有关的内容。

您能给我一些指导吗?如何将LibGit2Sharp方法包装到TAP构造中?链接到文档(如果我错过了什么),或者只是告诉我哪个回调函数连接到TaskCompletionSource对象会很好。

我是Git的新手,这也并没有真正的帮助,通常我只做基本的分支,合并和推送。

对于克隆,我使用:

Repository.Clone(@"https://MyName@bitbucket.org/MyRepo/MyProject.git/wiki", "repo");

对于拉动,我使用:

using (var repo = new Repository("repo"))
            {
                // Credential information to fetch
                LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
                options.FetchOptions = new FetchOptions();                

                var signature = new LibGit2Sharp.Signature(new Identity("myname", "mymail@google.com"), DateTimeOffset.Now);


                Commands.Pull(repo, signature, options);
            }

预先感谢

1 个答案:

答案 0 :(得分:2)

首先,您永远不要尝试异步同步异步同步。参见此article

如果您正在考虑使用Task.Run,请不要使用。这样就可以在线程池线程上换另一个线程,这需要增加2个上下文切换的成本。

但是您应该重新考虑整个方法。您不需要克隆存储库就可以获取文件的内容。文件的每个版本都有唯一的URL。您甚至可以获取特定分支的文件URL。