2009-09-24 3 views
1

Ive получил приложение C# 2.0, которое запускает средство просмотра Crystal Reports и отображает некоторые отчеты. Если я запустил это в режиме Debug или Release OUTSIDE визуальной студии, он работает нормально. Если я отлажу это через Visual Studio 2005, отчет появится, но через минуту или две позже VS выйдет из игры в ContextSwitchDeadlock, также сообщив, что никакие символы не были загружены для любого стека стека вызовов, поэтому я не могу его отлаживать ,Crystal Reports crashing visual studio

Возможно, это связано с тем, что отчет запускается в другом потоке. Причины этого немного запутаны, но я попытаюсь объяснить в случае, если это важно:

У нас есть длительный процесс, который работает на фоне потока. Когда процесс выполняется, он запускает отчеты. Если он (фоновый поток) просто вызывает Show (non-modal) в формах просмотра отчетов, он немедленно прекратит и уничтожит все эти формы отчетов. Таким образом, вместо этого он запускает один дочерний поток для каждого отчета и вызывает его с помощью ShowDialog (модальный). Таким образом, формы все кажутся немодальными друг к другу, но когда пользователь закрывает LAST, поток фонового процесса теперь не имеет дочерних потоков, и он может завершаться.

Означает ли это, имеет ли кто-нибудь представление, почему я получаю ContextSwitchDeadlock MDA внутри VS, но исключение не возникает, когда код работает автономно?

ответ

0

Думаю, вы ответили на свой вопрос ... это связано с тем, как вы управляете им в отдельном потоке.

1

Попробуйте renamining вам C: \ Temp \ каталог - Существует ноу вопросы, если есть файл XML в C: \ Temp \ Crystal Reports Сбои и вы не можете открыть их ..

0

Удалить или переместить любые .xml-файлы в папке c:/temp, если они есть. Они приводят к сбою базы данных. VS

0

Похожая проблема. Известно, что причиной того, что причиной возникновения сбоя может быть вызвана ошибка, вызвана тем, что файл xml находится в каталоге c: \ temp. Первый вариант - очистить каталог c: \ temp (работал для меня). Во-вторых, вы можете попытаться переименовать вашу временную директорию в «MyTemp» или что-то похожее. И последнее, но не менее важное: вы можете попытаться настроить ваш проект на использование 4.0 Framework, а не на клиентскую версию.

P.S: @John Cruz Нет, он не сделал, я не работаю с отдельными потоками в моем проекте и получил ту же ContextSwitchDeadlock-Error.

Смежные вопросы