Se connecter / S'enregistrer
Votre question

[C#] Rendre une fonction Asynchrone en Synchrone

Tags :
  • Windows phone
  • downloadstringasync
  • software
  • Programmation
Dernière réponse : dans Programmation
13 Mars 2012 11:51:40

Bonjour a tous je fais appelle a vous car j'ai un petit probleme,
J'aimerai savoir comment faire pour rendre une méthode Asynchrone en Synchrone.
Je sais que c'est possible mais malgré mes recherches sur internet je n'ai pas reussi a faire ce que je voulais
faire en sorte que la methode DownloadStringAsync de WebClient soit Synchrone

Merci a tous

Autres pages sur : rendre fonction asynchrone synchrone

13 Mars 2012 14:35:55

Non je ne peux pas le faire car j'utilise le sdk windows phone 7.1 et étant donné que les classes ne sont pas les memes que lorsqu'on développe un software "pour pc" je n'ai malheuresement pas cette méthode a disposition ^^
Contenus similaires
a c 232 L Programmation
13 Mars 2012 15:07:43

Est-ce que je peux te demander pourquoi tu as besoin d'une fonction synchrone ?
Au final, c'est la même chose, sauf que le synchrone te bloque tant que c'est pas fini...


Sinon, tu dois pouvoir t'en sortir avec une HttpWebRequest
13 Mars 2012 16:28:45

car j'ai 3 méthodes qui telecharge les news provenant de 3 different flux rss et j'ajoute ces news dans une liste et j'affiche ensuite le contenu de la liste et le probleme qui se presente et que j'affiche les news malgré le fait que ces méhodes n'ont pas fini d'ajouter les news dans la liste ( et donc d'afficher)
cela me lance une exception .
Je veux donc faire en sort que toute les méthodes aient finis d'ajouter les news dans la liste avant de les afficher
a c 232 L Programmation
13 Mars 2012 16:47:20

Il te suffit d'attendre que tes 3 méthodes soient récupérées avant de les afficher, non ?
Tu sais quand ta méthode est terminée avec l'évènement DownloadStringCompleted
13 Mars 2012 17:06:08

le probleme c'est que dans mon downloadStringCompleted il lance les méthode (ceux qui ajoute les news dans une liste) mais passe directement a la suite (c'est a dire a afficher), il ont pas le temps de terminé a temps que le programme les affiche déja.
13 Mars 2012 17:07:20



Il te suffit d'attendre que tes 3 méthodes soient récupérées avant de les afficher, non ? ==> c'est ce que je cherche a faire mais comme la méthode est Asynchrone je ne sais pas comment m'y prendre
a c 232 L Programmation
13 Mars 2012 17:44:10

Qu'on résume...
Tu fais 3 appels avec DownloadStringAsync
Tu veux qu'une fois ces 3 appels fait, que l'affichage soit fait, oui ?

Donc tu te créés 3 booléens qui sont à false par défaut (1 booléen par méthode qui indique si elle est terminée). Quand chacune des méthodes se termine, tu passes son booléen à true). Et tu vérifies si c'est la 3ème ou pas.
Si c'est la 3ème (les 3 booléens sont à true), tu peux afficher le résultat.

Ou sinon, tu affiches le résultat qu'au fur et à mesure de tes appels... sauf si tes 3 appels sont nécessaires avant que tu puisses afficher quelque chose.
13 Mars 2012 18:15:01

j'ai déja essayé cette méthode, en faisant une boucle pour dire "tant que les 3 méthodes ne sont pas terminés tu ne passes pas a la suite", le probleme est que une fois que le programme entre dans la boucle il boucle en attendant que les 3 méthodes se terminent, mais les méthodes ne se terminent pas car la boucle stop tout le programme y compris les méthodes Asynchrone
a c 232 L Programmation
13 Mars 2012 19:07:19

No no, pas faire de boucle !!!!
Dans chacun des DownloadStringCompleted, tu passes le booléen à true, et tu vérifies si les 3 booléens sont à true.

Donc le check ne se fera que 3 fois, et la 3ème fois ça sera bon.
25 Mars 2012 12:51:51

Salut Omar;

J'ai reussi à resoudre mon probleme en mettant en place l'architecture MVVM (Par contre comme c'est la premiere fois que j'utilise ce pattern specifique aux appli microsoft j'ai vraiment souffert).

Néanmoins j'ai utilisé ta méthode pour résoudre d'autres problemes et je suis satisfait, un grand merci à toi
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS