Executer une commande avec timeout

Résolu
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 1 mars 2009 à 01:48
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 1 mars 2009 à 13:19
Bonjour à tous,

J'utilise un code qui possède un bug Or ce code est dans une DLL dont je n'ai pas le code source, et qui est très difficile à refaire (un wrapper COM pour le journal NTFS de windows au passage, si vous en connaissez...).

Bref, il y'a une méthode qui plante 1 fois sur 5, en gelant l'appli. Je me disais que je pouvais peut être essayer de contourner ce bug en trouvant un moyen d'executer la méthode en question avec un timeout. Si le timeout est déclenché, alors mon programme reprend la main et je gère l'erreur (de toute façon c'est au déchargement de l'appli donc c'est pas un problème).

La question est : comment peut-on executer une méthode (d'une classe au passage) avec un timeout, pour prévenir un "gelage".

Merci d'avance !

MadMatt

2 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
1 mars 2009 à 02:06
On crée un thread via CreateThread. Dans ce dernier, on appelle la fonction buggée.
Le thread principal utilise WaitForSingleObject, avec un timeout de X millisecondes.
Si le timeout est passé sans que l'appel à la fonction soit terminé, on explose le thread (une p'tite variable booléenne pour savoir si elle a fini correctement).
Mais c'est probablement dûr à faire en VB6 !
3
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
1 mars 2009 à 13:19
Un thread, ok !
Si quelqu'un d'autre à une solution plus simple elle est la bienvenue

Merci

MadMatt
0
Rejoignez-nous