protected IEventCacheReadObject ProcessSimpleEvent( Guid componentId, Event eventObj, Guid?oldEventId, TimeSpan joinInterval, Guid accountId) { // используем блокировку, чтобы потокобезопасно склеивать события на стороне диспетчера var lockObj = LockObject.ForProcessSimpleEvent(componentId, eventObj.EventTypeId, eventObj.JoinKeyHash); lock (lockObj) { // склеиваем bool isEventNew; var rEvent = CreateOrJoinSimpleEvent(componentId, eventObj, oldEventId, joinInterval, accountId, out isEventNew); // обновим статус компонента if (rEvent != null) { Context.ComponentService.ProcessEvent(accountId, componentId, rEvent); } return(rEvent); } }