2010-09-22 3 views
1

J'ai une application d'impression qui utilise l'objet imprimante pour imprimer des fichiers. Sur une machine particulière (pas d'autres), ce programme se bloque après le traitement d'un certain nombre de fichiers (environ 20).Le programme VB6 plante pendant DoEvents, pourquoi?

Les plantages se produisent toujours lors d'un appel DoEvents.

Quelqu'un at-il déjà vu quelque chose comme ça?

Merci!

+2

Comme DoEvents permet au système d'exploitation de traiter d'autres événements, l'erreur peut être généré par un autre événement, peut-être lié à l'objet d'impression? Que fait votre objet d'impression lorsque vous exécutez DoEvents? Lorsque DoEvents est appelé et qu'un autre événement génère une erreur non gérée, l'application d'hébergement se bloque. Avez-vous un OnError Goto dans la méthode contenant l'appel DoEvent? Si ce n'est pas le cas, pouvez-vous en ajouter un et vérifier si le gestionnaire d'erreurs est exécuté ou s'il ne fait que planter l'application? Tout juste de la spéculation de ma part, bien sûr. – Nope

+1

Pouvez-vous nous dire le message d'erreur? – MarkJ

+0

J'ai un OnError GoTo dans le Sub qui appelle DoEvents. Le gestionnaire d'erreur n'est jamais exécuté. – Stringfellow

Répondre

3

Je voudrais examiner les fichiers Dr. Watson et mini-dump et de savoir ce qui se bloque exactement. Sur XP ce vit dans:

C: \ Documents and Settings \ All Users \ Application Data \ Microsoft \ Dr Watson

Dans d'autres versions de Windows, des endroits différents. Chargez le Minidump dans une version moderne de Visual Studio avec le pdo (symboles de débogage) de votre programme et vous devriez avoir une assez bonne idée de ce qui plante. Si vous n'avez pas créé d'informations de débogage symboliques, créez une construction avec cela. Assurez-vous également que vous compilez le code natif et non le code P (parfois les plantages P-code et vous ne pouvez pas comprendre pourquoi)

+0

Merci, Kris. Jusqu'à présent, je n'ai qu'un seul mini fichier de vidage d'un crash, et cela provient d'une version du programme qui ne contenait pas d'informations de débogage symboliques. Je vais quand même essayer de le charger dans VS et de voir ce qui se passe, cependant. Je compile en code natif. – Stringfellow

+0

C'est toujours difficile quand vous devez faire cela, mais j'ai appris par expérience à toujours créer un PDB et le mettre dans votre contrôle de version. Nous avons eu des problèmes avec des choses bizarres comme des applications qui ne font que se briser avec la version allemande de Windows XP et autres et la seule façon de comprendre ce qui ne va pas est l'ancienne minidump fiable (qui n'est pas toujours fiable). Il y a des options dans Dr. Watson que vous voudrez peut-être allumer dans le client, –

Questions connexes