BackgroundWorker

Résolu
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008 - 6 mars 2008 à 13:50
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Derniè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.

Merci,
Maxence

3 réponses

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

Maxence
0
Rejoignez-nous