首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在继承System.Timers.Timer.Elapsed事件时替换System.Timers.Timer事件

在继承System.Timers.Timer.Elapsed事件时替换System.Timers.Timer事件
EN

Stack Overflow用户
提问于 2016-02-28 16:48:36
回答 1查看 1K关注 0票数 1

我正在创建一个新类,以便使System.Timers.Timer类更好地满足我的需要。我创建我的新班级就像这样..。

代码语言:javascript
复制
using System.Timers;

class BtElapsedEventArgs : ElapsedEventArgs
{
    //My extras
}

namespace MyGreatNewTimer
{
    class BetterTimer : Timer
    {

    }
}

现在,我只想替换在其他地方触发的Elapsed事件。

代码语言:javascript
复制
private void TestTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  //Timer has elapsed
}

我想让它产生以下..。

代码语言:javascript
复制
private void TestTimer_Elapsed(object sender, BtElapsedEventArgs e)
{
  //Timer has elapsed
}

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-28 17:47:28

如果我正确理解了您的问题,您可以按照如何:发布符合.NET框架指南的事件(C#编程指南)创建自己的Elapsed事件,并隐藏原始的Epalsed事件:

代码语言:javascript
复制
namespace MyGreatNewTimer
{
    class BtElapsedEventArgs : EventArgs
    {
        public DateTime SignalTime { get; set; }
        //Some other properties
    }
    class BetterTimer : Timer
    {

        new public event EventHandler<BtElapsedEventArgs> Elapsed;

        public BetterTimer()
        {
            base.Elapsed += BetterTimer_Elapsed;
        }

        void BetterTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            var handler = this.Elapsed;
            if(handler!=null)
            {
                var bte = new BtElapsedEventArgs() { SignalTime = e.SignalTime};
                //Set other properties, then fire the event
                handler(sender, bte);
            }
        }
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35685344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档