2012-08-07 58 views
0

我開發了一個WPF應用程序,在關閉應用程序時遇到問題。應用程序關閉異常

僅在Windows 2003 PC上,應用程序在關閉時會引發以下異常。但它似乎並沒有從我的代碼中拋出,因爲我無法獲得一個調用堆棧。

這就是爲什麼我不能發佈任何進一步的細節。

你有什麼線索可以開始挖掘它嗎?

System.InvalidOperationException was unhandled 
    Message=Handle is not initialized. 
    Source=mscorlib 
    StackTrace: 
     at System.WeakReference.set_Target(Object value) 
     at System.Windows.Threading.Dispatcher.FromThread(Thread thread) 
     at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
     at MS.Win32.UnsafeNativeMethods.IntDestroyWindow(HandleRef hWnd) 
     at MS.Win32.HwndWrapper.DestroyWindow(Object args) 
     at MS.Win32.HwndWrapper.Dispose(Boolean disposing, Boolean isHwndBeingDestroyed) 
     at MS.Win32.HwndWrapper.Finalize() 
    InnerException: 

感謝您的意見。

編輯 我發現哪行代碼產生失敗。但我該如何解決它?

這是下面的代碼行:

 try 
     { 
      return DesignerProperties.GetIsInDesignMode(new DependencyObject()); 
     } 
     catch (Exception) 
     { 
      return true; 
     } 

我用這個來檢查代碼在設計運行。但是關閉這段代碼失敗了,儘管我發現了這個異常。

任何其他想法來檢查設計模式? 感謝您的幫助。

+0

那麼mscorlib是.net框架核心庫,看起來像你在那裏有一個問題 - 弱引用看起來是罪魁禍首..但爲什麼是任何人猜測:)。您嘗試創建一個沒有代碼的簡單WPF應用程序,並關閉該應用程序,看看您是否遇到同樣的問題? (當然在Win2003機器上) – Charleh 2012-08-07 13:13:59

+0

請看我的編輯。我發現了錯誤,但不知道解決方法... – BitKFu 2012-08-07 13:24:33

+0

之前,你問:我使用新的DependencyObject(),因爲我想檢查這在我的ViewModel – BitKFu 2012-08-07 13:27:49

回答

0

回答我的問題...

我可以通過實施支持字段爲IsInDesignMode物業解決問題。 支持字段現在要在ViewModel的構造函數中設置賭注集合,而不是我先前的解決方案,該解決方案在每次方法調用時檢查DesignMode。

這意味着,即使在Dispose方法中,也可以檢查應用程序是否在DesignMode中運行。