JejeLand
Messages postés111Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 5 août 20111 2 sept. 2008 à 14:49
Salut,
En fait je créé un thread dans lequel j'effectue des accès en écriture sur un disque dur endommagé et j'aimerais stoper le thread lorsque le programme bloque depuis plus de 1minute à cause d'une défaillance du disque.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 2 sept. 2008 à 17:29
Dans ton thread secondaire, tu dois pouvoir mettre à jour régulièrement une variable globale (Attention à la gestion de la concurrence d'accès).
Dans ton thread principal, à l'aide d'un timer, tu peux lire périodiquement la variable globale. Si elle n'a pas été mise à jour depuis un certain temps, tu peux killer le thread avec Terminatethread. Attention de bien lire la doc : c'est une fonction violente.
Tu peux aussi utiliser une solution plus élégante avec un thread supplémentaire qui attend des évènements émis par le thread de lecture. Le thread attendant le thread de lecture utiliserais WaitForSingleObject, avec un timeout. En sortie de cette fonction, tu regardes si la cause de sortie est le timeout ou l'évènement. Si c'est l'évènement, tu boucle sur ton WaitForSingleObject. Si c'est le timeout, c'est que le thread de lecture n'a pas déclenché d'évènement depuis un moment -> tu le kill.