Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF窗口事件处理程序_C#_Wpf - Fatal编程技术网

C# WPF窗口事件处理程序

C# WPF窗口事件处理程序,c#,wpf,C#,Wpf,所以我们知道,如果您附加了一个事件处理程序,如果对象不再被使用,我们应该在某个时候删除它。这如何适用于窗口对象 例如,窗口的加载事件,或关闭事件。如果我们在Initialize方法中注册EventHandler来处理这些事件,为什么我们不注销它们呢?,因为这不是什么大问题。通常,您在派生类本身中订阅事件,因此不会因为错误的事件处理程序订阅而导致实例在内存中滞留。此外,您还需要关闭事件处理程序,直到窗口生命周期的最后一刻,取消订阅也没有意义。这并不重要。只有当您订阅了一个对象上的事件,并且希望将其

所以我们知道,如果您附加了一个事件处理程序,如果对象不再被使用,我们应该在某个时候删除它。这如何适用于窗口对象


例如,窗口的
加载
事件,或
关闭
事件。如果我们在
Initialize
方法中注册EventHandler来处理这些事件,为什么我们不注销它们呢?

,因为这不是什么大问题。通常,您在派生类本身中订阅事件,因此不会因为错误的事件处理程序订阅而导致实例在内存中滞留。此外,您还需要关闭事件处理程序,直到窗口生命周期的最后一刻,取消订阅也没有意义。

这并不重要。只有当您订阅了一个对象上的事件,并且希望将其GC化时,这才是真正重要的。事件订阅可以阻止这种情况发生,并会消耗您的内存。我通常只覆盖onload()、OnClosing()等方法,而不是附加到事件。哦,我明白了,事件被订阅到实例本身。那么,当我将保存对窗口实例引用的变量设置为null时会发生什么呢?@States:那么这还不会起任何作用,因为
应用程序的意思是有一个列表:PHow heck这行吗?Lol,如果你把一个引用设置为null,它不应该变成poof吗?@状态:这个窗口可能是通过
window
构造函数添加到列表中的,这个构造函数总是隐式调用的。不,这可能是WPF框架跟踪应用程序中所有窗口的原因之一:防止对仍然打开的窗口进行不必要的垃圾收集。