2016-08-21 3 views
-1

Я пытаюсь использовать новую версию linq2twitter (4.1.0), но я просто не могу заставить ее работать. Раньше я работал с версией 2.1.11 до сих пор, и это сработало отлично.Получение друзей Twitter, не работающих с использованием linq-to-twitter

Я открыл новый проект ASP.NET и это мой код

Можете ли вы сказать мне, что я делаю неправильно? «DoSingleUserAuth» отлично работает. я введите нужные маркеры ...

protected void Page_Load(object sender, EventArgs e) 
    { 
     Task demoTask = DoDemosAsync(); 
     demoTask.Wait(); 
    } 

    static async Task DoDemosAsync() 
    { 
     var auth = DoSingleUserAuth(); 

     var twitterCtx = new TwitterContext(auth); 

     await ShowFriendsAsync(twitterCtx); 
    } 

    static IAuthorizer DoSingleUserAuth() 
    { 
     var auth = new SingleUserAuthorizer 
     { 
      CredentialStore = new SingleUserInMemoryCredentialStore 
      { 
       ConsumerKey = "ConsumerKey", 
       ConsumerSecret = "ConsumerSecret", 
       AccessToken = "AccessToken", 
       AccessTokenSecret = "AccessTokenSecret" 
      } 
     }; 

     return auth; 
    } 

    static async Task ShowFriendsAsync(TwitterContext twitterCtx) 
    { 
     var friendship = 
      await 
      (from friend in twitterCtx.Friendship 
      where friend.Type == FriendshipType.Show && 
        friend.SourceScreenName == "Linq2Twitr" && 
        friend.TargetScreenName == "JoeMayo" 
      select friend) 
      .SingleOrDefaultAsync(); 

     if (friendship != null && 
      friendship.SourceRelationship != null && 
      friendship.TargetRelationship != null) 
     { 
      Console.WriteLine(
        "\nJoeMayo follows LinqToTweeter: " + 
        friendship.SourceRelationship.FollowedBy + 
        "\nLinqToTweeter follows JoeMayo: " + 
        friendship.TargetRelationship.FollowedBy); 
     } 
    } 

10x, Лиор

+0

Кто-то проголосовал за этот вопрос, и это не имеет смысла. Вопрос мне кажется хорошим. Console.WriteLine в ShowFriendsAsync, вероятно, вне образцов Console, но я не вижу в этом большой проблемы, так как я загрузил код и скомпилировал run. Это был короткий пример, который прекрасно иллюстрировал проблему, особенно если вы посмотрите на мой ответ о том, как ее исправить. Я бы хотел, чтобы люди были немного приятнее. –

ответ

0

Есть две вещи, которые вы можете сделать, чтобы исправить это, сделать вашу страницу асинхр и заменяющие Подождите с ЖДУТ:

Добавьте асинхронный = «истинный» атрибут вашей директивы @Page:

<%@ Page Async="true" ... %> 

Вы можете переписать Page_Load, сделав его асинхронной и ожидает DoDemosAsync так:

protected async void Page_Load(object sender, EventArgs e) 
    { 
     await DoDemosAsync(); 
    } 

Проблема заключалась в том, что вызов Wait() вызвал тупик. С помощью async вы должны сделать свои асинхронные звонки полностью через цепочку вызовов.

0

Я вижу, что var result = Task.Run (() => ShowFriendsAsync (twitterCtx)). Результат;

работает отлично для меня. это хороший подход?

Lior

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