У меня есть представление (пользовательский элемент управления), в котором есть элемент управления вкладками и элементы вкладок.Когда приложение закрывается, я хочу удалить все элементы вкладки, и для этого я создал финализатор, который вызывает функцию RemoveAllTabItems.Однако я получаю сообщение об ошибке при попытке доступа к элементам управления вкладки: «Вызывающий поток не может получить доступ к этому объекту, потому что другой поток владеет им».Я пытался исправить ошибку с помощью диспетчера вкладок, но при этом функция удаления не вызывается.
Пример кода для иллюстрации:
private void RemoveAllTabItems()
{
IEnumerable<TabItem> tabs = this.myTabControl.GetTabItems();
foreach (TabItem tab in tabs)
TryClose(tab);
}
~MyClass()
{
this.myTabControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(RemoveAllTabItems));
// Already tried these:
// this.myTabControl.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(RemoveAllTabItems));
// this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(RemoveAllTabItems));
}