begin process at 2013 05 25 15:43:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Réseau & Internet

 > 

Internet

 > 

methode async


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

methode async

lundi 18 juin 2012 à 11:13:20 | methode async

contender59

Bonjour a tous!
Merci de m'accorder un peu de votre temps

J'ai une petite methode qui récupère des tweets sur Twitter en fonction d'un tag particulier.
J'aimerai rendre cette méthode Asynchrone pour quel ne freeze pas toute mon application.

Code C# :
public static List<Tweet> GetSearchResults(string searchString)
{
    using (WebClient web = new WebClient())
    {
        //More parameters then this. Most important is the page paramater. You can &page=1 to xxx. 
        //few parameters  in the url :     &rpp=100    for 100answer  |   %23 for hashtag | lang=en  for english msg......
        //  exemple: http://search.twitter.com/search.atom?lang=en&rpp=100&q=%23AnHashTag-filter:retweets
        // -filter:retweets   delete  duplicates
 
        string url = string.Format("http://search.twitter.com/search.atom?lang=en&q=%23{0}", searchString); //HttpUtility.UrlEncode(searchString)
                WebClient client = new WebClient();
 
        #region AsABrowser
        //Pretend to be Google Chrome
        //Pretending to be a browser instead of an app seems to make twitter respond faster
        client.Headers.Add("Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        client.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        client.Headers.Add("Accept-Language: en-US,en;q=0.8");
        client.Headers.Add("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16");
        #endregion
        #region TweetFormat
        XDocument doc = XDocument.Load(url);
        XNamespace ns = "http://www.w3.org/2005/Atom";
        List<Tweet> tweets = (from item in doc.Descendants(ns + "entry")
                  select new Tweet
                  {
                     Id = item.Element(ns + "id").Value,
                     Published = DateTime.Parse(item.Element(ns + "published").Value),
                     Title = item.Element(ns + "title").Value,
                     Content = item.Element(ns + "content").Value,
                     Link = (from XElement x in item.Descendants(ns + "link")
                                where x.Attribute("type").Value == "text/html"
                                select x.Attribute("href").Value).First(),
                     Image = (from XElement x in item.Descendants(ns + "link")
                                where x.Attribute("type").Value == "image/png"
                                select x.Attribute("href").Value).First(),
                     Author = new Author()
                              {
                                 Name = item.Element(ns + "author").Element(ns + "name").Value,
                                 Uri = item.Element(ns + "author").Element(ns + "uri").Value
                              }
                }).ToList();
        return tweets;
        #endregion
     }
}




J'ai regardé pas mal d'explication sur le net, mais rien me permettant de récupérer ma list de tweet a la fin.

Quelqu'un saurait-il m'aider ?

merci beaucoup
lundi 18 juin 2012 à 14:51:35 | Re : methode async

krimog

Administrateur CodeS-SourceS
Salut,

Le problème de l'asynchrone est surtout de se remettre sur le thread graphique pour l'affichage des résultats.

Déjà, un moyen très simple : la classe BackgroundWorker.
Tu crées un champ List<Tweet> dans ta classe. Tu mets les résultats de ta méthode dans ce champ.
Tu abonnes ta méthode (ou tu abonnes une méthode qui appelle ta méthode) à l'événement DoWork du BackgroundWorker.
Tu abonnes ensuite la méthode qui affiche les résultats (depuis le champ que je t'ai demandé de créer) à l'événement RunWorkerCompleted.

Une fois que c'est fait, lorsque tu veux lancer ta recherche asynchrone, tu appelles juste monBackgroundWorker.RunWorkerAsync();

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
lundi 18 juin 2012 à 16:02:47 | Re : methode async

contender59

Réponse acceptée !
Problème résolue :)
Je poste si besoin ;)

Code C# :
public static void GetSearchResultsAsync(string searchString, Action<List<Tweet>> callback)
        {
            ThreadPool.QueueUserWorkItem((WaitCallback)(o =>
           {
               var results = GetSearchResults(searchString);
               callback(results);
           }));
        }



Et dans mon control :
Code C# :
TweetSearch.GetSearchResultsAsync((String)args.NewValue, new Action<List<Tweet>>(delegate(List<Tweet> tweetList)
                     {
                         customControlInstance.Dispatcher.Invoke(new Action(delegate{
                         customControlInstance.m_PartlstTweets.ItemsSource = tweetList;
                         } ));
 
                     }));


Bonne journée !


Cette discussion est classée dans : client, item, element, ns, value


Répondre à ce message

Sujets en rapport avec ce message

Ca rame sévère ! [ par billou_13 ] Voila, g fait un programme serveur en utilisant les NetworkStream et je c pas pourquoi, dès qu'il y a 3 clients minimum, le serveur se met a ramer sév [LINQ] besoin d'un coup de main avec linq et ooxml [ par teddyalbina ] Bonjour a tous j'ai besoin  de votre aide, pour une requête linq. Je veux récupérer dans un document OOXML les métadonnées ( titre, auteur etc...). Ma C# insertion XML probleme [ par meme06 ] j'ai un xml et je trouve pas comment inserer des données a l'interieurmon XML         <Stock n xml Parsing sur WP7 [ par MariamKh ] Bonjour, j'ai crée un code en c# (sur Windows Phone 7) qui affichera des données extraites d'un fichier xml, mais il ne fonctionne pas ou il m'affiche WCF : Implémentation d'un service égal à égal [ par billyarmano ] bonjour, je suis en de faire une application wcf mais j'ai deux problèmes : 1) j'ai un service distribué sur plusieurs machines et j'ai un client sur Communication client/Serveur en WCF [ par billyarmano ] j'ai un problème avec la communication du service et du client. j'implémente un service windows qui est Hebergé dans une application ServiceWindows( d Communication WCF CLient/Serveur [ par billyarmano ] je repose ma question sous une autre forme. j'ai implémenté une application (Winform), je la considère comme client c'est ce client qui a la logique d Client FTP [ par DisqueDur62 ] Bonjour, je vous sollicite pour un problème que je rencontre avec la gestion de l'objet "FtpWebRequest" . Je voudrai savoir comment on utilise le "Ke si un item est sélectionné dans une listbox [ par thibaultlavoisey ] bonjour, je travaille actuellement sur un projet Application Windows Forms, qui à pour but de permettre de visualiser le texte que l'on a écrit dans Controle d'erreur [ par abbeille ] Bonjour a vous tous !! j'utilise une fonction de controle dans ma table registre , si je saisie un n°bus et date , qui est déja dans la table, il me


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,351 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales