Я создал настраиваемый пользовательский элемент управления WPF, который предназначен для использования третьей стороной. У моего элемента управления есть закрытый член, который является одноразовым, и я хотел бы убедиться, что его метод удаления всегда будет вызываться после закрытия содержащего окно / приложение. Однако 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;
}
}
}
Единственное решение, которое я нашел до сих пор, - это подписаться на событие ShutdownStarted Dispatcher. Это разумный подход?
this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;