2012-11-27 565 views
2

這是我的代碼拋出異常,它只是今天隨機啓動這裏的照片:訪問衝突異常C#

enter image description here

這裏是整個頁面代碼和錯誤異常:

public frmWFDocumentDetail() 
    { 
     InitializeComponent(); 

     NavigationInTransition navigateInTransition = new NavigationInTransition(); 
     navigateInTransition.Backward = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardIn }; 
     navigateInTransition.Forward = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardIn }; 

     NavigationOutTransition navigateOutTransition = new NavigationOutTransition(); 
     navigateOutTransition.Backward = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardOut }; 
     navigateOutTransition.Forward = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardOut }; 
     TransitionService.SetNavigationInTransition(this, navigateInTransition); 
     TransitionService.SetNavigationOutTransition(this, navigateOutTransition); 

     DataContext = App.ViewModel_WFDocumentDetailItems; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     //**this is how you pass parameters through to a new page**// 
     string processID = "-1"; 
     string processName = ""; 
     NavigationContext.QueryString.TryGetValue("processID", out processID); 
     NavigationContext.QueryString.TryGetValue("processName", out processName); 

     App.ViewModel_WFDocumentHeaderItems.LoadData("johnny", processID); 

     App.ViewModel_WFDocumentDetailItems.LoadData("johnny"); 

    } 

和訪問衝突:

System.AccessViol ationException:試圖讀取或寫入受保護的內存。這通常表示其他內存 已損壞。

我已閱讀起來就可以了,有人說這是NVIDIA網絡經理,有的人說我必須設置像禁止JIT優化一些設置,如果值沒有改變忽略GPU內存...但沒有用?任何人都可以請把我送往正確的方向?

按照要求,完整的堆棧

enter image description here

+1

你可以粘貼完整的stacK嗎?點擊「查看詳細信息」按鈕,然後粘貼整個堆棧(混淆公司名稱或識別動詞)。如果您進入「調試 - >選項和設置 - >調試 - >常規 - >啓用只是我的代碼」,您將停止在實際位置,這種例外情況會給您最後一個「steppable」行。這可能是答案與否的區別。 – taylorjonl

+0

這張照片是你需要的嗎? :) – Arrie

+1

男人,不要把堆棧作爲觀看窗口的圖片發佈,這是完全沒用的。相反,捕獲異常,在其上調用'ToString()',併發布返回的文本。 – Ran

回答

3

我用taylorjohnl的設置給了我「調試 - >選項和設置 - >調試 - >常規 - >啓用只是我的代碼」,然後錯誤直接到了一塊xaml,這是一個語法錯誤,繁榮修復它和應用程序再次:)所以違反錯誤對我來說基本上是一個參考錯誤,希望這可以幫助其他人以及在silverlight中使用表達式混合來調試UI中的xaml

-1

是什麼在InitializeComponent代碼()?有一些類在其中引用了null,(大部分是一個事件處理程序)。一旦觸發,它會報告AccessViolation。

+0

InitializeComponent通常是生成處理UI initalization的代碼。除非他專門將文件系統導航到.g.cs文件以進行更改,否則他沒有更改此代碼。 – taylorjonl

+0

從你的照片,錯誤看起來發生在那裏。有時當你自己更改事件處理程序時,可能會導致此問題。 –

0

我有一個類似的問題最終通過向MS Tech Support提交故障轉儲來解決這個問題。以下是他們的迴應:

問題是,崩潰是comctl32.dll(Windows公共控件)版本5.0中的一個已知錯誤,它隨Windows操作系統一起提供。這個bug在常見控件的5.0版本中不會得到修復,因爲該版本適用於Windows XP之前的應用程序。它已經在Windows XP及更高版本中包含的comctl32.dll版本6.0中得到修復。請注意,自從Windows XP以來,兩個版本的comctl32.dll(5.0和6.0)都包含在每個版本的Windows中。舊版應用程序就是爲了向後兼容目的而使用的。

要解決此問題,您需要更改應用程序以使其可選入comctl32.dll的版本6.0。在Windows窗體應用程序中,這是通過在應用程序啓動時調用Application.EnableVisualStyles方法完成的。如果您正在C#項目中開發,那麼您可以在應用程序入口點之前通過在Application.Run調用之前添加調用來完成此操作。例如:

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); //Add this line 
     Application.Run(new Form1()); 
    } 

如果你是在一個Visual Basic .NET項目,您可以將您的項目屬性,然後選擇「啓用應用程序框架」和「啓用XP視覺樣式」複選框選擇加入這個在應用程序屬性頁面上。

一旦你這樣做,它應該解決這個特定的訪問衝突。