c# - 继承System.Timers.Timer时替换System.Timers.Timer.Elapsed事件

标签 c# winforms timer .net-4.0 overriding

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

using System.Timers;

class BtElapsedEventArgs : ElapsedEventArgs
{
    //My extras
}

namespace MyGreatNewTimer
{
    class BetterTimer : Timer
    {

    }
}

现在我只想替换在别处触发的 Elapsed 事件。

private void TestTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  //Timer has elapsed
}

我希望它产生以下...

private void TestTimer_Elapsed(object sender, BtElapsedEventArgs e)
{
  //Timer has elapsed
}

我该怎么做呢?

最佳答案

如果我没看错你的问题,可以关注How to: Publish Events that Conform to .NET Framework Guidelines (C# Programming Guide)并创建您自己的 Elapsed 事件并隐藏原始的 Epalsed 事件:

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);
            }
        }
    }
}

关于c# - 继承System.Timers.Timer时替换System.Timers.Timer.Elapsed事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685344/

相关文章:

c# - 更新对象时 JsonConvert PopulateObject 不会将 null 值填充为可为 null 的整数

c# - 向 ASP.NET Core MVC 中的所有响应添加 header

c# - 如何防止表单多次打开

Java定时器,每秒更新一次

ios - 如何在手机快速晃动时计算时间?

c# - 找不到合适的方法来覆盖部分类的错误

c# - 在单线程公寓中运行代码并返回值,我无法设置当前的公寓模型

c# - 如何关闭与另一个 WinForm 代码不同的 WinForm?

.net - 寻找仅在用户选中 CheckBox 时触发的事件

c# - 同步 Forms.Timer 和 Diagnostics.Stopwatch