Добрый день! Решил написать схему переключения светофора, основанную на событиях. Заодно опробовал System.Threading.Timer. Получился вот такой код.
Проблема заключается в том, что не включаются события, определенные в TimerGreen, TimerRed, TimerYelllow
| Код | class LightEvent { public delegate void LightEventHandler();
public event LightEventHandler Green; public event LightEventHandler Yellow; public event LightEventHandler Red;
System.Threading.Timer timer; TimerCallback tcb; private int interval;
private int green; private int yellow; private int red;
public LightEvent(int _green, int _yellow, int _red) { green = _green * 1000; yellow = _yellow * 1000; red = _red * 1000; }
public void DoWorkLight() { interval = green; tcb = TimerGreen; for (int i = 0; i < 10000; i++) { timer = new System.Threading.Timer(tcb, false, interval, 0); timer.Dispose(); } }
public void TimerGreen(object source) { if (Yellow != null) Yellow(); tcb = TimerYellow; interval = yellow; }
public void TimerYellow(object source) { if (Red != null) Red(); tcb = TimerRed; interval = red; } public void TimerRed(object source) { if (Green != null) Green(); tcb = TimerGreen; interval = green; } }
|
Объясните, пожалуйста, в чем тут дело. |