gpt4 book ai didi

c# - 处置 WPF 用户控件

转载 作者:IT王子 更新时间:2023-10-29 03:34:20 25 4
gpt4 key购买 nike

我创建了一个自定义 WPF 用户控件,旨在供第三方使用。我的控件有一个私有(private)成员,它是一次性的,我想确保一旦包含的窗口/应用程序关闭,它的 dispose 方法将始终被调用。但是,UserControl 不是一次性的。

我尝试实现 IDisposable 接口(interface)并订阅 Unloaded 事件,但在主机应用程序关闭时都没有被调用。 MSDN 表示可能根本不会引发 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;

最佳答案

有趣的博文在这里:Dispose of a WPF UserControl (ish)

它提到订阅 Dispatcher.ShutdownStarted处置您的资源。

关于c# - 处置 WPF 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com