У меня есть проблема программирования, который я думаю, вызван моей ржавостью при помощи событий и делегатов ...Как получить доступ к объекту, к которому привязан таймер?
У меня есть код:
public void DoStuff()
{
List<IProcess> processorsForService1 = processorsForService1 = ProcessFactory.GetProcessors();
foreach (IProcess p in processorsForService1)
{
if (p.ProcessTimer != null)
{
p.ProcessTimer.Elapsed += new ElapsedEventHandler(IProcess_Timer_Elapsed);
}
}
}
И:
private void IProcess_Timer_Elapsed(object sender, ElapsedEventArgs e)
{
IProcess p = (IProcess)sender;
p.Step_One();
p.Step_Two();
}
Но когда я получаю обработчик события, получая нулевое исключение ссылки для p в первой строке.
Как передать аргумент обработчику в этом экземпляре?
Это не работает. Объект не знает, к какому классу он принадлежит. Отправитель - это «Таймер», а не «IProcess» –
. Так как я могу передать p обработчику событий? Мне нужно вызвать что-то в каждом классе IProcess каждые 5000 миллисекунд. – Exitos
Почему каждый процесс не может прослушивать собственный таймер? –