我的WPF測試應用程序(非常簡單,只有一個窗口)正在使用第三方受管dll(如X.dll)。這個託管的DLL使用一些非託管的DLL。 所以我們可以說我寫了一個小的wpf應用程序,它只是引用了X.dll。在窗口的構造函數中,我可以訪問X.dll中的某些東西(即在X.dll中的某些命名空間中)。在這樣做我不會捕捉任何異常,它似乎像事情正在按預期進行。但在返回控制到.NET運行時,我得到了應用程序類的「DispatcherUnhandledException」處理異常:「在算術運算溢出或下溢」「算術運算中溢出或下溢」WPF特定問題
System.ArithmeticException了未處理 消息 =「溢出或在算術運算中下溢。「
來源 = 「PresentationFramework」
堆棧跟蹤:
System.Windows.Window.ValidateTopLeft(Double length)
System.Windows.Window.CoerceTop(DependencyObject d, Object value) System.Windows.DependencyObject.ProcessCoerceValue(DependencyProperty dp, PropertyMetadata metadata, EntryIndex& entryIndex, Int32& targetIndex, EffectiveValueEntry& newEntry, EffectiveValueEntry& oldEntry, Object& oldValue, Object baseValue, CoerceValueCallback coerceValueCallback, Boolean coerceWithDeferredReference, Boolean skipBaseValueChecks)
System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)
System.Windows.DependencyObject.CoerceValue(DependencyProperty dp) at System.Windows.Window.SetupInitialState(Double requestedTop, Double requestedLeft, Double requestedWidth, Double requestedHeight)
System.Windows.Window.CreateSourceWindowImpl() at System.Windows.Window.SafeCreateWindow() at System.Windows.Window.ShowHelper(Object booleanBox)
System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
幾點:
- 這隻發生在WPF應用程序,而不是在WinForms應用程序。
- 這不會被抓住試試看。只在應用程序的DispatcherUnhandledException
- 這不會發生,如果我訪問窗口的'Loaded'事件中的X.dll的代碼,只發生在構造函數。
任何人都可以猜出問題嗎?
感謝, 米沙勒
當你說「訪問」,你的意思是你傳遞的值作爲參數的東西,對不對?你通過了什麼? – Jay 2010-03-09 18:15:22
如果我訪問/讀取整數XNameSpace.AStaticClass.StatInt(其中的XNamespace裏面X.dll命名空間),並將其存儲在另一個整數,我看到這一點。此外,我看到如果我把這個陳述放在try catch中,那麼它就不會被捕獲。它只會在System.Window.Application的DispatcherUnhandledException處理程序中被捕獲......這真的很奇怪。 – mishal153 2010-03-11 15:09:42