BackgroundWorker [Résolu]

Signaler
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008
-
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008
-
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.

Merci,
Maxence

3 réponses

Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
5
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é.
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
5
Salut,
Oui je pense que c'est à cause de ton while.
Ta fenêtre principal sert à quelques choses lorsque tu mesures les données?
Messages postés
69
Date d'inscription
dimanche 30 octobre 2005
Statut
Membre
Dernière intervention
6 mars 2008

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

Maxence