Moomoon07
Messages postés223Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 5 mai 2014
-
18 août 2006 à 15:26
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
19 août 2006 à 19:47
Salut a tous !
Je souhaiterais executer en arrièreplan une void (AfficherRep()) lors de l'ouverture d'un form (GestionCharte_Load
).
Est ce que vous pouvez m'aider ? (Une petite barre de chargement en prime ne serait pas de refus !)
Je ne sais pas quoi choisir entre utiliser la classe background worker ou thread.
Est ce que ce serait possible d'avoir un petit exemple d'utilisation de ces classes ?
(Désolé, mais les exemples du msdn sont inexistant pour la classe backgroundworker, ou alors je l'ai pas trouvé, et pour la classe thread, je ne comprend pas l'exemple).
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 19 août 2006 à 10:32
Salut,
En utilisant les Thread, il n'y a rien de tres compliqué.
Tu lances ton Thread au demarrage au "lancement" de ta form.
Si tu veux qu'il y ait une barre de chargement (sur ta form ?), le mieux serait de lancer ton Thread lors du déclenchement de l'evenement HandleCreated. Et plutot que de recreer un Thread, utilises ceux du Pool de Threads.
En gros ca donnce ceci :
Dans le constructeur de ta Form :
this
.HandleCreated +=
new
EventHandler(StartScreenControl_HandleCreated);
La méthode HandleCreated :
ThreadPool.QueueUserWorkItem(
new
WaitCallback(LaMethodeDeTonThread));
}
Et tu as la méthode de ton thread declarée ainsi :
private
void LaMethodeDeTonThread(
object state)
{
// Ici tu fais ce que tu veux que ton thread fasse
}
Pour la barre de chargement, il te suffir dont de mettre une ProgressBar, et de "converser" avec via les méthodes BeginInvoke / EndInvoke. Ceci etant du au fait qu'un thread (ton worker) n'a pas le droit d'acceder directement aux propriétés d'un Control qu'un autre thread a créé (Ton thread principal).