Pour créer un Thread:
1: Créez une nouvelle classe dans le projet.
2: Dans les propriétés de cette nouvelle classe, inscrivez "Thread"
dans le champ "Super". Nommez-la comme bon vous semble (exemple:
MyWonderfulThread).
Voilà, le nouveau Thread a été crée. Maintenant, il faut lui faire
exécuter du code.
3: Double-cliquez sur cette classe et allez dans les événements
(events) de celle-ci, dans l'événement "Run".
4: Déplacez le code à effectuer dans cet événement.
5: Si vous avez besoin de vous référer à quelque chose de la fenêtre
où se trouvait le code avant, ajoutez une référence à la fenêtre dans
le Thread (par exemple, "MyWindow As Win1"). Il faudra se référer à
cette propriété pour accéder à la fenêtre en question (ne pas oublier
de définir la variable à l'instance de la fenêtre).
6: Définissez une propriété destinée à se rappeler du "Thread" (par
exemple, dans la fenêtre affichée). Exemple: "Thread1 As
MyWonderfulThread".
7: Inscrivez ce code à l'endroit qui vous paraît justifié:
Thread1=New MyWonderfulThread
Thread1.MyWindow=self
Thread1.Run
8: ça devrait fonctionner. Sinon, j'attends de vos nouvelles.
Bonne chance.
Le 18 janv. 07 à 17:26 Soir, Francis Gorge a écrit:
Serait-il possible d'avoir un exemple de création de Thread ?
Le rafraichissement d'une progressbar serait pour moi très utile !
J'aimerai afficher correctement (mettre à jour) ma progressbar
pendant que mon application est occupé à copier ou déplacer des
fichiers et à compressér des fichiers vidéos.
Merci
Francis
Le 18 janv. 07 à 16:15, Arnaud Nicolet a écrit :
Le 18 janv. 07 à 12:32 Soir, Michel LO a écrit:
Il y a plus efficace :
crée un timer que vous lancez au début de traitement (multiple
c'est à dire qui n'arrête pas de tourner) et qui se déclenche
toutes les secondes.
Dans le timer, faire un refresh
A la fin du traitement arrêter le timer.
Comme ca, il ne se met à jour qu'une fois par seconde
indépendamment de la longueur du traitement.
Pas tout-à-fait. Le "Timer" ne va pas s'exécuter plus que le
rafraîchissement de la fenêtre (en d'autres termes: si le
rafraîchissement est bloqué pas une boucle exécutée ailleurs,
alors le "Timer" aussi, il ne va être exécuté qu'à la fin).
Ce que l'on conseille, en général, c'est de déplacer le code dans
un fil d'exécution ("thread" si vous préférez). Pour créer un fil
d'exécution, il faut créer une nouvelle classe.
Usuellement, une application fonctionne sur le fil d'exécution
principal (c'est pour cela que le rafraîchissement ne peut se
faire en même temps qu'autre chose). En créant un nouveau fil
d'exécution, on fait les choses en "parallèle", c'est comme du
multitâche, mais dans la même application.
|