2015-09-27 37 views
0

使用下面的代码我试图使用octokit.net连接到jQuery仓库,但代码似乎从来没有达到打印语句。有没有任何理由为什么这样,我知道await关键字导致延迟,但核心问题是为什么我无法连接到存储库。由于.net github api - 无法连接到存储库

 static async void test() 
    { 

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

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

     Console.WriteLine("aa"); 

    } 
+0

您是否尝试了解您的请求是否适用于邮差? – aloisdg

+0

嗨,我发现的解决方案,我会尽快发布它的答案,如果你有兴趣,基本上我似乎没有配对等待任务。 – user3904388

+0

您是否在使用控制台应用程序? – aloisdg

回答

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"); 

    } 
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"); 
    } 
} 

顺便说一句,斯蒂芬·克利里是在async/await主题最丰富的开发商之一。我建议你将他的博客作为围绕此主题的内容的绝佳来源。