J'ai une classe parente qui contient un tableau d'objets avec un temporisateur associé. Je veux que la classe parente soit capable de démarrer et d'arrêter ces minuteurs, et surtout que la classe parente détecte quel objet enfant est 'timer' écoulé même s'il a été déclenché. Est-ce possible et si oui, quelle est la meilleure façon de le faire?C# WinForm Timers - Notifier la classe parente qu'un événement timer a été déclenché
0
A
Répondre
1
Je suggère que vous donniez aux objets enfants un événement qui peut être déclenché lorsque le temporisateur est déclenché. La classe Parent peut ensuite attacher un gestionnaire à l'événement de chaque enfant.
Voici un pseudo-code pour vous donner une idée de ce que je veux dire. Je n'ai volontairement pas montré de code WinForms ou Threading, car vous ne donnez pas beaucoup de détails dans ce domaine.
class Parent
{
List<Child> _children = new List<Child>();
public Parent()
{
_children.Add(new Child());
_children.Add(new Child());
_children.Add(new Child());
// Add handler to the child event
foreach (Child child in _children)
{
child.TimerFired += Child_TimerFired;
}
}
private void Child_TimerFired(object sender, EventArgs e)
{
// One of the child timers fired
// sender is a reference to the child that fired the event
}
}
class Child
{
public event EventHandler TimerFired;
protected void OnTimerFired(EventArgs e)
{
if (TimerFired != null)
{
TimerFired(this, e);
}
}
// This is the event that is fired by your current timer mechanism
private void HandleTimerTick(...)
{
OnTimerFired(EventArgs.Empty);
}
}
Merci beaucoup cela a fonctionné parfaitement! – Riina