Woslike
Messages postés46Date d'inscriptionmercredi 25 juillet 2012StatutMembreDernière intervention12 septembre 2013
-
3 oct. 2012 à 18:29
Woslike
Messages postés46Date d'inscriptionmercredi 25 juillet 2012StatutMembreDernière intervention12 septembre 2013
-
4 oct. 2012 à 12:03
Bonjour !
J'aimerai un petit coup de main... cela fait déjà un moment que je cherche sans vraiment trouver de solution...
Je vous explique ma situation :
Sur mon programme ( Pocket PC ) lorsque je valide un numéro d'équipe ( On tape un numéro d'équipe puis on valide ) un panel avec écrit "OK" vient s'afficher.
J'aimerai qu'après 5sec le panel disparaisse tout seul tout en gardant le Control sur le programme. Pour cela j'ai utilisé un Thread. Mon seul problème s'est qu’apparemment on ne peux pas gérer le panel directement dans le thread... Quelqu'un pourrai m'aider ?
Voici ma première tentative : ( ne fonctionne pas )
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 3 oct. 2012 à 18:46
Bonjour,
Pourquoi ne pas utiliser le contrôle Timer ?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
Woslike
Messages postés46Date d'inscriptionmercredi 25 juillet 2012StatutMembreDernière intervention12 septembre 20131 4 oct. 2012 à 10:31
Je prends exemple sur une barre de chargement... mettre en place une procédure de chargement dans un thread avec l'affichage d'une 'progressbar' qui évolue en même temps que le chargement tout en gardant le contrôle sur le programme.
Le plus simple à mon gout, c'est un coup d'Invoke !
Quoi qu'il se passe, tu utilise la méthode Invoke pour appeler une méthode qui sera exécutée par ton thread principal (celui de ta Form donc), en lui envoyant éventuellement des paramètres (tableau d'Object).
Woslike
Messages postés46Date d'inscriptionmercredi 25 juillet 2012StatutMembreDernière intervention12 septembre 20131 4 oct. 2012 à 11:21
Compagnon flemmards ! Oui j'ai vue la page en Francais ^^ .
Par contre pourrait-tu me montrer comment utiliser l'invok ? parsque sur appareils.. le backgroundworker n'existe pas je suis un peu bloquer :XXXXX
madkeyboard
Messages postés100Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention21 décembre 20121 4 oct. 2012 à 11:37
Du coup moi je l'utilise mais en réceptionnant des évènements, donc ça complique un peu...
La fonction qui t'intéresse dans leur tuto, ce serait ça :
private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
Si tu veux pas te faire chier, tu vire la condition, tu garde que l'invoke dans le if !
Il faut créer un délégué (chez eux : "SetTextCallback"), pour toi il faut déclarer un délégué sans paramètres (parce que ta fonction DoWorkPanel n'en a pas).
Tu instancie un délégué de ce type (ils l'on appelé "d"), dans lequel tu entre la méthode à appeler (pour toi "DoWorkPanel").
Ensuite il ne reste qu'à faire l'Invoke (comme ci-dessus), avec ton délégué, puis des paramètres vide (null ? ça doit y aller ^^) !
madkeyboard
Messages postés100Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention21 décembre 20121 4 oct. 2012 à 11:39
Le résultat, c'est que ce thread va demander au thread principal de ta form d'exécuter la méthode DoWorkPanel, au lieu du treahd "secondaire" !
Pourquoi on doit utiliser un délégué ? J'en sais rien, je suis pas assez pointu ^^
Et du coup, c'est bien dans ton thread que tu exécute tout ça !