Я создал пользовательский пользовательский элемент управления 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;