继承System.Timers.Timer时替换System.Timers.Timer.Elapsed事件
Replacing the System.Timers.Timer.Elapsed event when inheriting System.Timers.Timer
我正在创建一个新的 class,这样我就可以使 System.Timers.Timer class 更符合我的需要。我像这样创建新的 class...
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);
}
}
}
}
我正在创建一个新的 class,这样我就可以使 System.Timers.Timer class 更符合我的需要。我像这样创建新的 class...
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);
}
}
}
}