Background worker [Résolu]

Signaler
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
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).

Merci d'avance ...

MMN

4 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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 :

private
void StartScreenControl_HandleCreated(
object sender,
EventArgs e)
{

   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).

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
Voilà le link sur MSDN

<hr size="2" />VC# forever
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Bien modeste, il n'a même pas osé mettre une référence sur son super tutorial à propos des Invoke / BeginInvoke.
Voilà qui est fait

<hr size="2" />VC# forever
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Un peu pressé par le temps quand j'ai écrit le message

Merci Bidou

Mx
MVP C#