Исключение при попытке добавить элементы управления в UserControl - PullRequest
2 голосов
/ 12 октября 2011

Когда я пытался добавить элементы управления в мой список 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. Может ли кто-нибудь помочь мне в этом? ТНХ ..

1 Ответ

2 голосов
/ 05 ноября 2012

У меня была эта проблема сегодня. Используя отладчик, вам нужно копаться в дереве исключений. Для каждого исключения может быть внутреннее исключение. Копайте как можно глубже. Затем посмотрите на трассировку стека. В моем случае у меня был (пользовательский) пользовательский элемент управления, который во время построения вызывал исключение пустого ref.

Ваш случай может быть менее очевидным. Посмотрите на трассировку стека самого глубокого исключения, затем установите точку останова для этой строки кода. Если дальнейшая отладка не выявляет проблему, попробуйте окружить строку кода, нарушающую код, блоком try..catch. Тогда вы можете ткнуть в исключение более локально.

...