나는 이벤트 및 대리인을 사용하여 내 rustiness 인해 생각하는 프로그래밍 문제가 있어요 ...Timer가 연결된 객체에 액세스하려면 어떻게합니까?
코드가 :
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에 대한 null 참조 예외가 발생하는 이벤트 핸들러에 도착합니다.
이 인스턴스에서 인수를 처리기에 전달하는 방법은 무엇입니까?
그런 식으로 작동하지 않습니다. 객체는 자신이 속한 클래스를 알지 못합니다. 보낸 사람은'타이머 '이며'IP 프로세스'는 아닙니다 –
그래서 p를 이벤트 처리기에 전달할 수 있습니까? 5000 밀리 초마다 각 IProcess 클래스에서 무언가를 호출해야합니다. – Exitos
왜 각 프로세스가 자체 타이머를 대신들을 수 없습니까? –