gpt4 book ai didi

c# 事件处理程序被添加两次

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

这是一个虚构的例子,但我想知道如果 InitialiseTimer 函数被调用两次会发生什么。计时器已用函数是否被触发两次。如果函数是静态的,这会改变吗?

    private static void InitialiseTimer()
{
TheTimer = new System.Timers.Timer();
TheTimer.Interval = 400;
TheTimer.Elapsed += new ElapsedEventHandler(TheTimer_Elapsed);
TheTimer.AutoReset = false;
}

public void TheTimer_Elapsed(object sender, ElapsedEventArgs e)
{
//Do stuff in here
}

我打算在下面使用来防止这种情况

Has an event handler already been added?

谢谢,理查德

最佳答案

如果您两次注册事件处理程序,则每次引发事件时都会调用两次。

如果您将 TheTimer_Elapsed 设置为静态,这不会改变,因为您仍将持有对该静态方法的两个引用。

在大多数情况下,没有必要像 Blair Conrad 在您链接到的问题中发布的那样编写复杂的内容。只是不要忘记每次使用 += 时都使用 -= ,这样你就安全了。

关于c# 事件处理程序被添加两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180695/

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