2011-10-12 82 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块包围有问题的代码行。然后,您可以更多地在本地寻找异常情况。

相关问题