gpt4 book ai didi

c# - 如何取消初始化 FrameworkElement?

转载 作者:行者123 更新时间:2023-11-30 20:45:58 25 4
gpt4 key购买 nike

我们有一个派生自 FrameworkElement 且不受我们控制的类。此类在 OnInitialize 中注册事件处理程序方法。

由于 FrameworkElement 不提供与 OnInitialize 对应的对象,正确清理此类的模式是什么?

它保持根目录,因为它没有任何部分删除导致泄漏的 EventHandler。

最佳答案

没有“去初始化”这样的东西。当无法在其构造函数中完全初始化对象时使用初始化方法,因为它依赖于在构造期间不可用的数据。在这些情况下,构造分为两个阶段:第一步在无参数构造函数中执行,第二步在外部数据可用后在初始化方法中执行,如 OnInitialize

您描述的是对象处置,它是通过调用对象的Dispose 方法来执行的。编写良好的类应该清理其数据,释放任何外部资源释放任何事件处理程序。

视觉元素通常在其生命周期中有另一个步骤,由 OnLoad/OnUnload 方法处理。当元素实际放置在 XAML View 中并连接到其他 UI 元素时,就会发生加载步骤。事件处理程序应在 OnLoad 方法中注册并在 OnUnload 方法中删除。

如果元素没有 Dispose 方法,您可以引发 Unload 事件来强制清理,尽管这有点 hack:

control.RaiseEvent(new RoutedEventArgs(FrameworkElement.UloadedEvent))

关于c# - 如何取消初始化 FrameworkElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546038/

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