Я створив користувацьке управління користувачем WPF, яке призначене для використання третьою стороною. У моєму управлінні є приватний член, який є одноразовим, і я хотів би переконатися, що його метод розпорядження завжди буде викликаний, коли вікно / додаток, що містить міститься, закривається. Однак UserControl не є одноразовим. Я спробував реалізувати інтерфейс IDisposable та підписатись на подію Unloaded, але не дзвонив, коли хост-програма закривається. Якщо це взагалі можливо, я не хочу покладатися на споживачів мого контролю, які пам’ятають викликати конкретний метод утилізації.
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;