gpt4 book ai didi

c# - 何时从对象中删除事件处理程序?

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:53 25 4
gpt4 key购买 nike

所以我在对象的加载事件中注册了一些事件处理程序。

tv.PreviewMouseDown += new MouseButtonEventHandler(SignalScrollViewer_PreviewMouseDown);

但我有两个问题。
  • 如果加载发生两次并尝试再次添加事件处理程序会出现问题吗?
  • 我应该如何处理取消注册事件?它会在销毁时自动处理注销,还是我需要在某些事件(如卸载或其他情况下)处理它?
  • 最佳答案

  • 是的,这将导致另一个订阅导致处理程序执行两次。您可以在已加载的处理程序中删除已加载的处理程序。

    MSDN :

    Loaded and Unloaded might both be raised on controls as a result of user-initiated system theme changes. A theme change causes an invalidation of the control template and the contained visual tree, which in turn causes the entire control to unload and reload. Therefore Loaded cannot be assumed to occur only when a page is first loaded through navigation to the page.

  • 如果对象消失了,它就不能引发任何事件,所以不需要对此做任何事情。并且处理程序不会使对象保持事件状态(反之亦然)。
  • 关于c# - 何时从对象中删除事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412964/

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