fmillox
Messages postés18Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention21 décembre 2007
-
19 sept. 2006 à 09:46
fmillox
Messages postés18Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention21 décembre 2007
-
20 sept. 2006 à 16:32
Bonjour,
J'ai une application, en l'ocurrence Acrobat Distiller, qui tourne sur un
poste en continu (session toujours ouverte). J'ai un service windows qui crée
des fichiers PostScript et qui les dépose dans des répertoires que le
Distiller parcoure et les transforme en pdf.
Le problème est que j'ai un exemple de fichier PostScript qui fait planter
complètement Acrobat Distiller. J'ai l'erreur standard :
"Acrobat Distiller a rencontré un problème et doit fermer. Nous vous prions
de nous excuser pour le désagrément encouru.
Si vous étiez...."
+ un bouton "Débogage" + un bouton "Envoyer le rapport d'erreurs" + un
bouton "Ne pas envoyer"
Est-ce que lorsqu'il y a ce type d'erreur commune à toutes applications
windows, on peut la détecter ? En gros, je voudrais que mon service puisse
scruter si ce type d'erreur a été détecté pour Acrobat Distiller et après la
gestion du plantage étant manuelle, envoyer un e-mail à l'administrateur pour
relancer Acrobat Distiller ( ça, aucun pb).
geobasic
Messages postés69Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 3 octobre 2006 19 sept. 2006 à 10:56
Je crois que Renfield à raison tu aura du mal à détecter à distance si Acrobat Distiller est planté. Par contre tu peux faire un petit programme à installer sur le serveur qui lance l'appli et qui boucle en continue jusqu'à la fin de l'appli pour verifier si son code exit est correct. Si c'est pas le cas il relance l'application est le tour est joué. J'avais donné un exemple lors d'un forum précédent pour le même type de problème, voici son adresse:
fmillox
Messages postés18Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention21 décembre 2007 19 sept. 2006 à 16:34
D'abord, merci pour vos réponses.
Le problème de ton exemple c'est qu'il faut attendre le code exit. Or lors du plantage, tu n'as que le code exit que lorsque tu appuies sur "Ne pas envoyer" de la boîte d'erreur classique windows, pas avant.
Ce bout de code par exemple (associé à un simple bouton dans une appli à part) :
Dim
prc
As System.Diagnostics.Process() = Process.GetProcessesByName("acrodist")
If prc.Length > 0
ThenMsgBox(prc(0).Responding())
End
If
me permet de vérifier l'état du processus.
Tant que le processus Distiller ne plante pas (le début de la transformation PostScript vers Pdf), il m'affiche True quand je clique sur le bouton. Dès que le processus plante( boîte de dialogue windows qui apparaît ), j'appuie sur le bouton et là , 0 réponse..... En gros, il faut que j'appuie sur "Ne pas envoyer", par exemple, pour que par enchantement tout ce débloque et mon appli de test me renvoie False.......En gros, le genre de réponse qui arrive après la bataille :-(
J'ai essayé pas mal de chose mais en faite à chaque fois il faut que j'appuie sur cette boîte de dialogue pour que j'ai une réponse.
Est ce que justement la solution n'est pas là ???? ( un thread qui fait la demande de réponse au processus et qui est censé la renvoyer puis dans le thread principal un timer pour attendre et killer le process s'il ne répond pas au bout d'un certain temps.....)