2015-09-27 3 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

Вы пытались выяснить, работает ли ваш запрос в Postman? – aloisdg

+0

Привет, я нашел решение, я отправлю его в ближайшее время в качестве ответа, если вы заинтересованы, в основном я, похоже, не спаривался с Task. – user3904388

+0

Вы используете консольные приложения? – aloisdg

ответ

1

Изменение кода для этого решить эту проблему, при нахождении неясного переполнения стека пост я пропустил мой первый бой исследования, по-видимому, при использовании ждать его нужно в паре с «Task», если кто-то готов чтобы добавить более подробную информацию о том, почему это так, добавьте комментарий для будущих зрителей.

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 в консоли приложения, поскольку Консольные приложения оленья кожа поддерживает асинхронный основной метод. Если вы хотите узнать больше об этой проблеме, Стивен Клири расскажет об этом в своем блоге: 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 тему. Я рекомендую вам его блог как отличный источник контента по этому вопросу.

Смежные вопросы