Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention 6 mars 2008
-
6 mars 2008 à 13:50
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention 6 mars 2008
-
6 mars 2008 à 15:37
Bonjour,
Je pensais avoir trouvé mon bonheur avec les backgroundworker, cependant je suis confronter à un problème qe je n'arrive pas à résoudre.
J'utilise Visual C# 2008 Express.
Voilà en gros mon souci:
J'ai une application qui permet de communiquer avec plusieurs instruments (en RS232 ou IEEE) et qui peut lancer plusieurs mesures indépendantes qui ont besoin des instruments connéctés. A chaque mesure, un backgroundworker, ces mesures ont une fenêtre permettant de voir l'avancement de la mesure. Mon problème vinet du fait que j'attend parfois une centaine de secondes qu'un instrument réponde (car la mesure dure 100 secondes): dans ce cas la fenêtre de la mesure ne se freeze pas mais c'est ma fenêtre principale de l'application qui freeze (j'ai un while(j'ai pas de réponse) Application.DoEvents()).
Je sens que mes explications ne sont pas très claires [ je ne sais pas si c'est équivalent de dire que mon souci est mon thread principal attend le résultat d'un backgroundworkr pour continuer] mais si quelqu'un a réussi à comprendre quelque chose, je serais heureux d'avoir son avis.
lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 6 mars 2008 à 15:28
Si jamais, si tu fait form1.showDialog() permet de rendre form1 modale, c'est a dire que temps qu'elle est ouverte, tu ne pourras pas accèder(je veux dire interagire) avec la form qui l'a instancié.
Supopste
Messages postés69Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention 6 mars 2008 6 mars 2008 à 15:37
Ca y est, je viens de comprendre (après une petite pause la révélation est apparue).
En réalité, dans le backgroundworker, j'utilisais des objets créés dans le thread principal... du coup lors de la longue attente, c'est le thread principal qui freeze. J'ai donc changé un peu comment je crée les objets (à l'intérieur du backgroundworker) et ça marche nikel.
Merci pour l'aide