이 코드는 처리 시간을 통해 어떻게 작동합니까? (즉, 그것은 어떻게 동기?) 동기/차단이 이벤트/위임 구독 인 방법은 무엇입니까?
public delegate void FooDelegate(bytes[] data);
public event FooDelegate FooEvent;
FooEvent += new FooDelegate(Process_X);
FooEvent += new FooDelegate(Process_Y);
FooEvent += new FooDelegate(Process_Z);
while (receiving)
{
byte[] data = getRealTimeData();
StopWatch.Start();
FooEvent(data);
StopWatch.Stop();
Console.Write(StopWatch.Elapsed.Millisec));
StopWatch.Reset();
}
나는 몇 가지 질문이 있습니다
- 각 가입 프로세스를 순차적/synchornously 호출에 FooEvent 결과에 대한 호출? (아마도 yes ...)
- 각 Process_N이 끝내는 데 시간이 오래 걸린다 고 가정하면, 끝날 때까지 각각의 호출이 체인 (즉, 다음 호출)을 차단할 것인가? 이것이 사실이라면, 프로세스 X, Y, Z를 병렬 방식으로 호출하는 방법 다음에 하나씩 호출하고 각각이 끝날 때까지 기다리지 않고 모든 프로세스가 끝날 때까지 기다리십시오.
몇 확인서 : 가입자의 수는 매우 높은 들어간 경우
- , 내가 얻을 것이다 스톱워치 인쇄 시간을 추측
- 높은 Process_N의 처리 로직은 무거운 얻을 경우, 또한 스톱워치
'병렬 이벤트'를 검색하면 다음 질문을 찾을 수 있습니다. http://stackoverflow.com/questions/7834130/events-with-task-parallel-library http://stackoverflow.com/questions/ 1516119/c-sharp-events-how-to-process-in-a-parallel-manner http://stackoverflow.com/questions/6453655/parallel-event-handling-in-c-sharp –
@gt : 단. 이 질문을 답으로 올리시겠습니까? –