получить график 2 (или более) пользователей из Twitter - PullRequest
1 голос
/ 06 сентября 2011

Я пытаюсь получить временную шкалу из 2 или более пользователей в списке, а затем упорядочить по дате и отобразить в виде списка

на данный момент у меня есть следующее: -

        Contacts searchTerm1 = cmbContact.SelectedItem as Contacts;

        if (searchTerm1 != null)
        {
            contactList = GetCurrentContacts(searchTerm1.CatID);

            foreach (var contact in contactList)
            {
                GetTweetResults(contact.Username);

                foreach (var contactTweet in _contactTweets)
                {
                    _allContactTweets.Add(contactTweet);
                }

            }

            TweetList1.ItemsSource = _allContactTweets;
        }

И я получаю твиты Async

    private void GetTweetResults(string user)
    {

        WebClient twitterAccess = new WebClient();
        twitterAccess.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitterAccess_DownloadStringCompleted);
        twitterAccess.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + user));

    }

    private void twitterAccess_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs args)
    {
        try
        {
            XElement xmlTweets = XElement.Parse(args.Result);
            var contactTweets = (from tweet in xmlTweets.Descendants("status")
                                                    select new ContactTweet
                                                               {
                                                                   ProfileImage =
                                                                       tweet.Element("user").Element("profile_image_url").Value,
                                                                   TweetText = tweet.Element("text").Value,
                                                                   UserName = tweet.Element("user").Element("screen_name").Value,
                                                                   Created = (tweet.Element("created_at").Value.ParseDateTime())
                                                               }).ToList();


            foreach (var contactTweet in contactTweets)
            {
                _contactTweets.Add(contactTweet);
            }


        }
        catch (Exception exception)
        {
            MessageBox.Show("Error downloading tweets - " + exception.Message);
        }

    }
}

Теперь моя идея в GetTweetResults - дождаться завершения twitterAccess_DownloadStringCompleted и затем продолжить процесс, однако я не знаю, как это сделать.

Может кто-нибудь сказать мне, как этого добиться?

Спасибо за вашу помощь и время

UPDATE

Удалось снизить его до

        WebClient twitterAccess = new WebClient();
        twitterAccess.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitterAccess_DownloadStringCompleted);
        twitterAccess.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + contactList1[0].Username));

        WebClient twitterAccess2 = new WebClient();
        twitterAccess2.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitterAccess_DownloadStringCompleted);
        twitterAccess2.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + contactList1[1].Username));

Теперь мне нужно найти способ зацикливания в contactList1 и динамически генерировать WebClient .....

ОБНОВЛЕНИЕ 2

Проблема решена

        foreach (var contact in contactList)
        {
            WebClient twitterAccess = new WebClient();
            twitterAccess.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitterAccess_DownloadStringCompleted);

            twitterAccess.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + contact.Username));
        }

1 Ответ

0 голосов
/ 06 сентября 2011

foreach (var contact в contactList) {WebClient twitterAccess = new WebClient ();twitterAccess.DownloadStringCompleted + = new DownloadStringCompletedEventHandler (twitterAccess_DownloadStringCompleted);

        twitterAccess.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + contact.Username));
    }
...