2009-09-24 43 views
1

我有一個C#2.0應用程序啓動Crystal Reports查看器並顯示一些報告。如果我在Visual Studio的Debug或Release模式下運行它,它運行良好。如果我通過Visual Studio 2005進行調試,那麼報告會彈出,但是稍後一兩分鐘VS就會在ContextSwitchDeadlock上出現異常,並告訴我任何調用堆棧幀都沒有加載符號,因此我無法調試它。Crystal報告崩潰的視覺工作室

這可能與報告在另一個線程上啓動的事實有關。其原因有點複雜,但我會嘗試解釋以防萬一它很重要:

我們有一個運行在後臺線程上的長時間運行的進程。當這個過程完成後,它會啓動報告。如果它(後臺線程)在報表查看器窗體上調用Show(非模態),它將立即終止並終止所有報表。因此,它會爲每個報告啓動一個子線程並使用ShowDialog(模態)調用它。那樣的話,表單看起來對彼此來說都是非模態的,但是當用戶關閉最後一個時,後臺進程線程現在沒有子線程並且可以終止。

這是否有道理,有沒有人有任何想法,爲什麼我會得到VS內的ContextSwitchDeadlock MDA,但是當代碼獨立運行時不會引發異常?

回答

0

我想你回答了你自己的問題......它與你如何在單獨的線程中運行它有關。

1

嘗試renamining你C:\ TEMP \目錄中 - 有一個問題,知道,如果有在c的XML文件:\ TEMP \ Crystal報告崩潰,你不能打開他們..

0

刪除或移動如果您有c:/ temp文件夾中的任何.xml文件。他們導致數據庫專家崩潰VS

0

得到了同樣的問題。據瞭解,導致數據庫專家導致VS崩潰也是由於某些xml文件在您的c:\ temp目錄中。第一個選項是,清空c:\ temp目錄(爲我工作)。其次,您可以嘗試將您的臨時目錄重命名爲「MyTemp」或類似的東西。最後但並非最不重要的是,您可以嘗試將項目設置爲使用4.0 Framework而不是客戶端版本。

P.S:@John Cruz他沒有,我沒有在我的項目中使用單獨的線程,並得到了相同的ContextSwitchDeadlock-Error。