Если вы хотите иметь возможность вызывать событие в любое время (не только в момент, когда вы запускаете таймер), вы можете инкапсулировать таймер в свой собственный класс MyTimer.Этот класс предоставляет оригинальные методы и свойства Timer.Кроме того, я добавил событие с явным добавлением и удалением.Таким образом, всякий раз, когда вы добавляете делегата к событию, это добавляется как к событию частного MyTimer, так и к исходному событию Elapsed таймера.Это означает, что таймер запускает Elapsed обычным способом, но вы можете вручную вызвать событие, вызывающее RaiseElapsed (это должно звучать намного проще, глядя на код).
public class MyTimer
{
Timer t = new Timer();
event ElapsedEventHandler timerElapsed;
public event ElapsedEventHandler Elapsed
{
add
{
t.Elapsed += value;
timerElapsed += value;
}
remove
{
t.Elapsed -= value;
timerElapsed -= value;
}
}
public double Interval
{
get
{
return t.Interval;
}
set
{
t.Interval = value;
}
}
public void Start()
{
t.Start();
}
public void Stop()
{
t.Stop();
}
public void RaiseElapsed()
{
if (timerElapsed != null)
timerElapsed(null, null);
}
}