从Twitter获取2个(或更多)用户的时间轴

本文关键字:用户 时间 获取 Twitter 2个 | 更新日期: 2023-09-27 18:07:49

我试图在一个列表中获得2个或更多用户的时间轴,然后按日期排序并在listview中显示

目前我有以下内容:-

        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完成,然后继续这个过程,但我不知道如何做到这一点。

谁能告诉我如何实现这一点?

感谢您的帮助和时间

更新

设法把它降到

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

从Twitter获取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));
    }