Я имел дело с этим прошлой ночью.То есть мне нужно было вызвать dispose для объекта в UserControl.Я думаю, у вас есть два варианта.
Я добавил экземпляр BackgroundWorker в WPF UserControl.Это может или не может быть хорошей идеей, но что угодно.Для каждого элемента UserControl необходимо запустить только один экземпляр BackgroundWorker.Итак, я инициализирую BackgroundWorker как ноль.Когда мне нужно использовать BackgroundWorker, я проверяю, имеет ли он значение null, а затем создаю новый экземпляр, чтобы он выполнял свою работу.Затем я удаляю его в событии завершения работника и возвращаю ему значение null.
Вы можете использовать события закрытия или выгрузки окна WPF.Выгрузка не вызывается в UserControl, но происходит в окне, в котором хранится этот UserControl.
Закрытие события WPFWindow (или Unload, или что угодно) вызывает пользовательскую функцию выпуска в вашем UserControl.Эта специальная функция выпуска делает свою работу.
Итак, нет действительно хорошего одного размера, подходящего для любого решения вашей проблемы.Требуется больше дизайна и продуманных функций, которые требуют утилизации, потому что, как правило, WPF этого не требует.Как правило, WPF требует, чтобы вы установили пустые элементы.(Может ли UserControl.Unload вызываться, когда вы устанавливаете UserControl на ноль? До этого не думали об этом, но если это так, то это будет правильный ответ.)