[VB] Faire tourner un module dans son propre thread

Faire tourner un module dans son propre thread [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2005 à 20:19:32    

Salut.
 
Je suis en train de reprendre une application écrite en VB, et je dois l'améliorer.
 
Actuellement, dans un écran, il y a la liste des fichiers présents dans un répertoire. Ces fichiers peuvent être mis à jour pendant l'utilisation de l'appli (c'est même systématiquement le cas).
Le développeur qui est passé avant moi à foutu un timer qui recharge cette liste toutes les 60 secondes.
 
Bon, ça marche, mais le rechargement systématique est chiant (perte de focus) et surtout, quand on vient de déposer un fichier et qu'il faut attendre pour le voir, c'est lourd.
 
Je me suis penché sur l'API de Windows qui ajoute un espion sur le système de fichier, et ça marche bien. J'arrive à détecter n'importe quel changement dans le répertoire en question, et par conséquent, je vais être capable d'améliorer considérablement l'appli, notamment en raffraîchissant de façon sélective la liste (suppression ou ajout de la ligne correspondant à la modif) et en "temps réel".
 
Seulement, cette API est synchrone, c'est à dire qu'au lieu de me déclencher un évènement, elle bloque l'éxécution de mon programme, qui se met à continuer au moment où un changement se produit.
 
C'est très bien, mais ça, mais c'est pas ce que je veux : l'utilisateur doit évidement pouvoir continuer à se servir de l'appli pendant ce temps !
Je voudrais donc savoir s'il y a un moyen de mettre ça dans un module, qui tourne dans son propre thread, et soit m'envoie des évènements, soit fait lui-même la modif dans la liste.
 
Un pote m'a proposé la solution batarde qui consiste à créer une Form invisible, qui fait ça (chaque Form tourne dans son propre thread en VB), mais bon, c'est quand même assez crade... Y'a mieu ?

Reply

Marsh Posté le 20-04-2005 à 20:19:32   

Reply

Marsh Posté le 25-04-2005 à 19:59:34    

Méheu :(
 
Pourquoi quand c'est moi qui pose des questions, personne ne me répond ? :cry:

Reply

Marsh Posté le 26-04-2005 à 21:05:41    

Bon, je réitère ma question...
 
Là, maintenant, c'est bloquant, il faut absolument que je m'en sorte.
 
Je dois surveiller un répertoire.
Quand il y a un changement (un ajout de fichier pour être exact), je dois déclencher une fonction dans mon programme.
 
Seulement, j'utilise l'API de Windows "FindFirstChangeNotification" avec "WaitForSingleObject", hors cette daube me pose un léger problème : elle n'est pas assynchrone, et du coup, ça bloque tout mon programme.
 
Même en mettant le code comme on m'avait dit dans une autre form invisible, ça bloque tout.
 
Comment faire ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed