MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
1 mars 2009 à 01:48
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 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".
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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 !