2011-10-12 83 views
2

當我試圖將控件添加到我的UserControl列表時,它拋出「調用線程無法訪問此對象,因爲不同的線程擁有它」。例外。嘗試將控件添加到UserControl時出現異常

 panel_PanelHolder.Children.Clear(); 
     panel_PanelHolder.Children.Add(usr_panel); 

但是,當我用下面的代碼,

 Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => 
     { 
      panel_PanelHolder.Children.Clear(); 
      panel_PanelHolder.Children.Add(usr_panel); 
     })); 

它拋出「異常已被調用的目標引發異常」。例外。

我需要的是清除控制,並添加一個控制面板。我不知道如何解決這個儘快。我正在使用STA線程來動態操縱WPF窗口控件。有人可以幫助我嗎? thx ..

+3

第一個例外是有道理的,第二個例外很有意義。看起來你有另一個問題,只有當你修復了跨線程問題時纔會出現。也許發佈整個錯誤(inc堆棧跟蹤) –

+3

「異常已被調用的目標拋出」異常**總是**有一些內部異常。你可以發佈嗎? –

+1

你有多少個線程?如果有多個,那麼巫婆一個擁有面板控制?第二個例外請寫 內部例外 – 2011-10-12 14:39:48

回答

2

今天我有這個問題。使用調試器,您需要挖掘異常樹。對於每個例外,都可能存在內部例外。挖儘可能深。然後看看堆棧跟蹤。在我的情況下,我有一個(自定義)用戶控件,在構造過程中會導致null ref異常。

您的情況可能不太明顯。查看最深層異常的堆棧跟蹤,然後在該代碼行設置一個斷點。如果進一步的調試沒有發現問題,請嘗試用try..catch塊包圍有問題的代碼行。然後,您可以更多地在本地尋找異常情況。

相關問題