2012-08-09 63 views
8

調試/運行我的metro應用程序時,出現了一些奇怪的現象。 在拖放過程中,屏幕將被刷新。我添加了一些功能來阻止正在進行拖放時正在刷新的綁定屬性。Win8 - Windows.UI.Xaml.dll中未處理的異常

但有時應用程序崩潰,但在拋出一些異常,我可以調試的代替,我的一切是一個窗口,說要打開外部剛剛在時間調試器

的未處理的win32異常發生在SOME_APP.exe [7785]。

(外部調試器不會帶來更多的信息)

和輸出說:

未處理的異常在0x05017145(Windows.UI.Xaml.dll)在SOME_APP.exe:0000005 :訪問衝突讀取位置0x00000088。

我正在使用x64設備。 有人聽說過這樣的問題嗎?

+0

它給了你一個完美的例外 - 訪問衝突。您正試圖訪問或修改不屬於您的內存。 – steveg89 2012-08-09 11:09:38

+0

是的,它似乎,但我不做任何內存尋址代碼。 win8,xaml.dll和/或32位系統與64位有什麼問題? – salcosand 2012-08-09 11:14:16

+0

我不能肯定地說,但我的第一個測試是註釋掉代碼,禁用刷新並查看錯誤是否持續。你可能在不知道的情況下在內部某個地方破壞內存,這可能導致這個錯誤。但這都是假設。如果該錯誤不再發生在刪除代碼時,您可能想要發佈您正在做的事情,以便我們可以查找錯誤。 – steveg89 2012-08-09 11:20:00

回答

11

如果你正在傳遞實現了INotifyPropertyChanged的對象,繼承了BindableBase或DependencyObject等,通過NavigationParameter;然後在NavigatedPage中綁定(或將它們綁定到導航頁面中),則很可能會出現此錯誤。導航時,請勿通過NavigationParameter傳遞除原始類型外的任何對象。

您正在收到此異常,因爲不存在引用的方法。例如。

  1. 您有一個名爲Categories的對象,它繼承了BindableBase。
  2. 你將它綁定到Home.xaml。
  3. Home.xaml的綁定機制訂閱了Categories對象的PropertyChanged事件。
  4. 您將Article.xaml傳遞的Categories對象導航爲NavigationParameter。
  5. 將Categories對象綁定到Article.xaml。
  6. 當類別對象中的屬性更改時;該屬性將觸發PropertyChanged事件。
  7. 該事件有兩個訂閱者。 Home.xaml和Article.xaml,但Home.xaml不再存在,因爲你離開它。但你的代表持有它的地址;所以它試圖執行;並且由於訪問衝突錯誤而失敗。