Я создал пользовательский пользовательский элемент управления WPF, предназначенный для использования третьей стороной. У моего элемента управления есть закрытый член, который является одноразовым, и я бы хотел, чтобы его метод dispose всегда вызывался после закрытия содержащего окна / приложения. Тем не менее, UserControl не является одноразовым. Я попытался реализовать интерфейс IDisposable и подписаться на событие Unloaded, но ни один из них не вызывался при закрытии приложения хоста. Если это вообще возможно, я не хочу полагаться на то, что потребители моего контроля помнят, чтобы вызывать определенный метод Dispose.
public partial class MyWpfControl : UserControl
{
SomeDisposableObject x;
// where does this code go?
void Somewhere()
{
if (x != null)
{
x.Dispose();
x = null;
}
}
}
Единственное решение, которое я нашел, - это подписаться на событие Dispatcher ShutdownStarted. Это разумный подход?
this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;