.net github api - 无法连接到存储库

时间:2015-09-27 10:55:14

标签: .net api github octokit

使用下面的代码我试图使用octokit.net连接到jquery存储库,但代码似乎永远不会到达print语句。是否有任何原因,我知道await关键字导致延迟,但核心问题是我无法连接到存储库的原因。谢谢

       static async void test()
    {

        var client = new GitHubClient(new ProductHeaderValue("OctokitTestsJordan"));

        var repository = await client.Repository.Get("jquery", "jquery");

        Console.WriteLine("aa");

    }

2 个答案:

答案 0 :(得分:2)

您无法在控制台应用中使用async/await,因为控制台应用不支持异步主方法。如果你想进一步了解这个问题,Stephen Cleary在他的博客中谈到这一点:Async Console Programs

对于您的代码,它将如下所示:

using Nito.AsyncEx; // get it on NuGet

class Program
{
    static void Main(string[] args)
    {
        AsyncContext.Run(() => MainAsync(args));
    }

    static async void MainAsync(string[] args)
    {
        await Test();
    }

    private static async Task Test()
    {
        var client = new GitHubClient(new ProductHeaderValue("OctokitTestsJordan"));

        var repository = await client.Repository.Get("jquery", "jquery");

        Console.WriteLine("aa");
    }
}

顺便说一下,Stephen Cleary是async/await话题中最多产的开发者之一。我推荐你的博客作为这个主题的一个很好的内容来源。

答案 1 :(得分:1)

将代码更改为此解决了问题,找到了我在第一次研究中错过的模糊堆栈溢出帖子,显然在使用等待时需要与“任务”配对。如果有人愿意为此添加更多详细信息,请为将来的观众添加评论。

    static void Main(string[] args)
    {
        Task.Run(async () => { await test(); }).Wait();
    }

    private static async Task test()
    {

        var client = new GitHubClient(new ProductHeaderValue("OctokitTestsJordan"));

        var repository = await client.Repository.Get("jquery", "jquery");

        Console.WriteLine("aa");

    }