2012-09-24 54 views
0

我有一個程序正在後臺線程中做一些幾何分析。新的PathGeometry()引發TypeInitializationException?

通常這相當奏效,但令人驚訝的,現在我想我的開發計算機上創建的PathGeometry時得到一個異常:

於是就簡單的代碼:

PathGeometry geometry = new PathGeometry(); 

我得到一個系統。 TypeInitializationException { 「明鏡Typeninitialisierer獻給\」 System.Windows.Media.PathGeometry \ 「的帽子EINE Ausnahme verursacht」}
堆棧跟蹤是:

bei System.Windows.Media.PathGeometry..ctor() 
bei Bsoft.ilka.AlkisLeser.AlkisDatei.GetPosition(XElement xe) in AlkisDatei.cs:Zeile 267. 

此異常包含的InnerException System.ComponentModel.Win32Exception { 「UngültigesFensterhandle」}設置InnerException的 堆棧跟蹤是:

bei MS.Win32.UnsafeNativeMethods.GetWindowLongWndProc(HandleRef hWnd) 
bei MS.Win32.HwndSubclass.UnhookWindowProc(Boolean force) 
bei MS.Win32.HwndSubclass.Dispose() 
bei MS.Win32.HwndWrapper..ctor(Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 width, Int32 height, String name, IntPtr parent, HwndWrapperHook[] hooks) 
bei System.Windows.Threading.Dispatcher..ctor() 
bei System.Windows.Threading.Dispatcher.get_CurrentDispatcher() 
bei System.Windows.DependencyObject..ctor() 
bei System.Windows.Media.PathFigureCollection.get_Empty() 
bei System.Windows.Media.PathGeometry..cctor() 

奇怪的事情:可執行做一些其他的電腦上工作。

什麼問題?爲什麼PathGeometry構造函數試圖訪問某個窗口句柄?我該如何解決這個問題?

我使用的是.NET框架4.0,代碼在VS2010和VS2012上均拋出。

+2

記錄.NET版本和InnerException的堆棧跟蹤 –

+0

感謝您的提醒! – Sam

回答

0

當本機CreateWindowEx()api函數調用失敗時,您將獲得此堆棧跟蹤。它失敗的原因很少,但有一個原因。很可能你的程序遭受了句柄泄漏,消耗了10,000個窗口句柄。 Windows在哪一點上拒絕讓您創建更多。

使用Taskmgr.exe,進程選項卡進行診斷。查看+選擇列,勾選USER對象。以防萬一,也勾選句柄和GDI對象。觀察過程的顯示值。 USER Objects穩步攀升的價值法術毀滅了厄運。找出泄漏的原因可能有點困難。當然考慮一下內存分析器。任意評論大塊的代碼。如果你沒有在Taskmgr.exe中看到泄漏,那麼還有一些其他的過程與你的進行混淆。任意殺死他們一個一個找到麻煩製造者。

最後但並非最不重要的是,看到一個工作線程創建一個窗口是一個麻煩的祕訣。我對PathGeometry不夠了解,但它確實看起來不像那種能夠在工作上正確運行的類。

+0

並非所有這些代碼都是由我編寫的,但我不認爲這個工作線程創建了一個窗口。而且異常很早就拋出,所以手柄沒有穩定增加。我剛啓動程序,選擇菜單項併發生異常。對象用法是句柄:1069,用戶對象:99,GDI對象:65,我認爲這不是特別高。我會嘗試重新啓動計算機並重新運行它以保留其他進程,謝謝您的提示! – Sam

+0

我從來沒有想到PathGeometry可能會做一些GDI的東西。我總是用它來計算幾何數據...... – Sam

+0

即使在重新啓動之後,我的電腦仍然存在錯誤。在我的同事電腦上它確實沒問題地工作。很奇怪!所以可能這是我電腦的問題,就像你猜測的那樣。 – Sam

相關問題