gpt4 book ai didi

c# - 防止多次分配相同的事件处理程序

转载 作者:IT王子 更新时间:2023-10-29 03:53:21 24 4
gpt4 key购买 nike

如果我在运行时分配一个事件处理程序并且它位于可以多次调用的位置,建议的做法是什么以防止将同一处理程序多次分配给同一事件。

object.Event += MyFunction

将其添加到将被多次调用的位置将执行处理程序 'n' 次(当然)。

在尝试通过

添加之前,我已采取删除任何以前的处理程序的方法
object.Event -= MyFunction; 

object.Event += MyFunction;

这行得通,但不知何故似乎不对劲。关于正确处理这种情况的任何建议 ;)。

最佳答案

Baget 关于使用显式实现的事件是正确的(尽管其中混合了显式接口(interface)实现和完整的事件语法)。你可能可以摆脱这个:

private EventHandler foo;

public event EventHandler Foo
{
add
{
// First try to remove the handler, then re-add it
foo -= value;
foo += value;
}
remove
{
foo -= value;
}
}

如果您曾经添加或删除多播委托(delegate),那可能会出现一些奇怪的边缘情况,但这种情况不太可能发生。它还需要仔细记录,因为这不是事件正常工作的方式。

关于c# - 防止多次分配相同的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399648/

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