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?