2017-10-01 1 views
-1

J'ai écrit une assez grande application fonctionnant en arrière-plan, faisant des tâches de dôme et traitant des données.Mon application C# est en boucle, comment puis-je trouver la position dans le code?

Maintenant, le problème est que l'application fonctionne correctement depuis un certain temps. Mais quand je vérifie un jour plus tard par exemple le Backgroundworker de mon application semble boucler ou coincé. Il n'y a pas de message d'erreur et l'interface utilisateur de l'application fonctionne toujours correctement. Il arrête simplement de traiter les données.

Spécifiquement pour ce cas, j'ai ajouté un site web simple pour moi-même où le Backgroundworker signale le DateTime actuel. Donc, quand le DateTime sur le site Web est un peu à jour, je sais qu'il fonctionne bien. Mais quand c'est dans le passé, je sais que mon application est bloquée.

Le problème survient après un délai indéfini. Cela peut être 10 minutes ou 90 heures. Maintenant, pour le débogage: Est-il possible dans Visual Studio de voir où se trouve actuellement l'application? Cela rendrait le débogage beaucoup plus facile. Otherwhise je dois mettre des points d'arrêt sur la base d'essais et d'erreurs ...

Meilleures salutations,

Julian

+0

Fixez le débogueur et appuyez sur le bouton Pause. – CodeCaster

+0

Je n'ai pas le backgroundworker alors. J'arrive à la ligne en cours: Application.Run (new Form1()); –

+0

Utilisez un cadre de journalisation pour enregistrer les étapes que votre application exécute à l'intérieur de la boucle. Dump dans le fichier journal également les informations sur les valeurs des variables clés utilisées dans cette boucle et qui gèrent la durée de vie et les points clés à l'intérieur de la boucle. Laissez votre application s'exécuter et, après l'heure requise, vérifiez le contenu du fichier journal. – Steve

Répondre

0

vous avez deux options:

attacher le débogueur 1.- comme est déjà suggéré et vérifie le code, mais si l'application fonctionne correctement pendant longtemps, ce n'est pas la meilleure idée.

2.- fichiers journaux. Créez des fichiers journaux pour suivre votre application.

Ce que je ferais: Je combinerais les deux options. Ajouter des fichiers journaux pour vérifier les résultats et quand l'application a atteint certains points (pour décider par vous) et puis, une fois que je sais plus ou moins où le problème est, utilisez le débogueur.

Bonne chance

Edit:

Je suis entièrement d'accord avec cette réponse, mais ajoute que vous pouvez bénéficier de faire le passage des travailleurs de fond des informations clés de position de retour à l'interface utilisateur qui entre et sort des sections particulières afin que vous pouvez simplement interroger quand vous attachez. Puisque le problème peut prendre plusieurs heures pour se manifester, vous pourriez vous retrouver avec beaucoup de fichier journal à parcourir, sauf si vous utilisez un journal roulant avec des entrées limitées. Définir continuellement un indicateur vous permettrait au moins de savoir où placer le point d'arrêt. à ce moment là.