2009-09-24 8 views
1

J'ai une application C# 2.0 qui lance la visionneuse Crystal Reports et affiche des rapports. Si je cours cela en mode Debug ou Release en dehors de visual studio, ça fonctionne bien. Si je débogue cela via Visual Studio 2005, le rapport apparaîtra, mais une minute ou deux plus tard, VS flippe sur un ContextSwitchDeadlock, me disant aussi qu'aucun symbole n'a été chargé pour un cadre de pile d'appel, donc je ne peux pas le déboguer .Crystal rapports crashing visual studio

Cela a probablement quelque chose à voir avec le fait que le rapport est lancé sur un autre thread. Les raisons de cela sont un peu compliquées mais je vais essayer d'expliquer au cas où c'est important:

Nous avons un processus de longue durée qui s'exécute sur un thread d'arrière-plan. Lorsque le processus est terminé, il lance des rapports. Si elle (le thread d'arrière-plan) appelle simplement Show (non-modal) sur les formulaires du visualiseur de rapport, il se terminera et supprimera tous ces formulaires de rapport immédiatement. Donc, à la place, il lance un thread enfant par rapport et l'appelle avec ShowDialog (modal). De cette façon, les formulaires sont tous apparemment non modaux l'un par rapport à l'autre, mais lorsque l'utilisateur ferme le DERNIER, le thread de processus d'arrière-plan n'a plus de fils enfants et peut se terminer. Est-ce que cela a du sens, et est-ce que quelqu'un a une idée de la raison pour laquelle je trouverais le MDA ContextSwitchDeadlock dans VS, mais aucune exception n'est levée lorsque le code est autonome?

Répondre

0

Je pense que vous avez répondu à votre propre question ... cela a à voir avec la façon dont vous l'exécutez dans un fil séparé.

1

Essayez vous renamining c: \ temp répertoire \ - Il y a une questions de savoir que s'il y a un fichier XML dans le répertoire c: \ temp \ Crystal Reports tombe en panne et que vous ne pouvez pas les ouvrir ..

0

supprimer ou de déplacer des fichiers .xml dans votre dossier c:/temp si vous en avez un. Ils provoquent une panne de l'expert de base de données VS

0

Problème rencontré. Il est connu que la base de données Expert provoque le crash de VS en raison de la présence d'un fichier xml dans votre répertoire c: \ temp. La première option est, pour vider le répertoire c: \ temp (travaillé pour moi). Deuxièmement, vous pouvez essayer de renommer votre répertoire temporaire en "MyTemp" ou quelque chose de similaire. Et last but not least, vous pouvez essayer de configurer votre projet pour utiliser 4.0 Framework pas la version du client.

P.S: @John Cruz Non, il n'a pas, je ne travaille pas avec des threads séparés dans mon projet et a eu la même erreur ContextSwitchDeadlock.

Questions connexes