Backgroundworker, modifications multi-threads

ptit_tof57 Messages postés 79 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 4 avril 2009 - 16 janv. 2008 à 19:08
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 18 janv. 2008 à 09:09
Bonjour,

      Je dispose d'une petite application qui se connecte vers
une base de données et effectue une requete.
Le traitement de cette requete
doit etre fluide, donc j'ai décidé d'utiliser le composant
backgroundworker.

Voici en gros comment se déroule la logique du
bouton de recherche :

- affichage d'un message
pour patienter ( Un deuxieme formulaire composé seulement d'un label)
-
ouverture de la connexion vers la base de données
- execution de la
requete
- fermeture de la connexion

(Tout ceci s'effectue dans
la procédure DoWork de mon backgroundworker.)

Mon
probleme est que j'essaie d'inscrire l'avancement de cette requete dans le
deuxieme formulaire sur la propriété text du label (celui du message d'attente)
mais les informations ne sont pas prise en compte.
Par contre si je
positionne un label sur le formulaire principal, j'ai bien la posibilité de
modifier le texte de celui-ci tout au long de ma requete.

Je pense
qu'il y a un soucis entre thread principal et secondaire mais j'ai un peu de mal
a saisir quel en est la cause exactement.

Je vous remercie d'avance pour
votre aide.
Christophe.

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
17 janv. 2008 à 13:16
Bonjour

Tu es en .NET1 ou 2 (2002/2003 ou 2005) (2008 je ne connais pas) ?

Comment tu fais appel à ton label situé sur l'autre form (code) ?

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
ptit_tof57 Messages postés 79 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 4 avril 2009 1
17 janv. 2008 à 14:39
Bonjour NHenry, je suis en .net2 et pour faire appel a mon label j'ai tenté par la méthode direct

form2.label1.text, qui ne génére meme pas une erreur, et par la méthode des délégués qui n'a aucun effet...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
17 janv. 2008 à 15:55
Bonjour

Est-ce que cela fonctionne quand tu fais cela par le clic sur un bouton

Private sub Button_Click(...)
    form2.label1.text="..."
end sub

?

Pour être clair, je n'ai jamais bossé ave"c BackgroundWorker, mais uniquement avec la classe Threading.Thread.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
ptit_tof57 Messages postés 79 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 4 avril 2009 1
17 janv. 2008 à 17:30
Oui effectivement cette methode fonctionne...


Je reste ouvert a toutes propositions avec la classe que tu as citée.

Merci d'avance.
Christophe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
18 janv. 2008 à 09:09
Bonjour

2 proposition :
1) voir la valeur de form2.label1.InvokeRequired, True, tu dois utiliser l'invocation.
2) Utiliser un attribut privé dans form1 et avec un Timer mettre cette valeur dans From2.Label1.Text.

note : évite les noms par défaut.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous