Я создал пользовательский пользовательский элемент управления WPF, который предназначен для использования третьей стороной. У моего контроля есть частный участник, который является одноразовым, и я хотел бы убедиться, что его метод утилизации всегда будет вызван, как только содержащее окно/приложение будет закрыто. Тем не менее, usercontrol не является одноразовым. MSDN говорит, что разгруженное событие не может быть поднято вообще. И это также может быть вызвано более одного раза, то есть тогда, когда пользователь изменяет тему. public partial class MyWpfControl : UserControl
{
SomeDisposableObject x;
// where does this code go?
void Somewhere()
{
if (x != null)
{
x.Dispose();
x = null;
}
}
}
< /code>
Единственное решение, которое я обнаружил до сих пор, - это подписаться на событие выключения диспетчера. Это разумный подход? < /P>
this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
Подробнее здесь: https://stackoverflow.com/questions/502 ... r-controls