当前位置:  开发笔记 > 编程语言 > 正文

C#从计时器添加和删除事件

如何解决《C#从计时器添加和删除事件》经验,为你挑选了1个好方法。

我试图从计时器添加和删除事件,我有以下代码:

Timer myTimer = new Timer(); // Windows.Forms Timer

public void addEvent(MyDelegate ev)
{
    myTimer.Tick += new EventHandler(ev);
}

public void removeEvent(MyDelegate ev)
{
    myTimer.Tick -= new EventHandler(ev);
}

我不知道如果我在尝试以这种方式添加和删除委托时做了任何愚蠢的事情,我能够添加代理并按预期启动它们.但是,当我尝试删除事件时,它们会继续触发Timers Tick.

任何人都能看到明显错误吗?



1> atoumey..:

我相信这段代码:

myTimer.Tick -= new EventHandler(ev);

创建一个新的EventHandler对象.它永远不会删除现有的EventHandler.要获得所需的功能,您应该将EventHandlers而不是MyDelegates传递给add和remove方法:

Timer myTimer = new Timer(); // Windows.Forms Timer

public void addEvent(EventHandler ev)
{
    myTimer.Tick += ev;
}

public void removeEvent(EventHandler ev)
{
    myTimer.Tick -= ev;
}

调用代码必须跟踪添加的EventHandler,以便在取消订阅时可以传入相同的EventHandler对象.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有