private void SkyWatchEventHandler(ISkyWatchEventTypes skyWatchEventType, string eventKey) { lock (_thisLock) { try { if (skyWatchEventType == ISkyWatchEventTypes.WriteOccured) { Type envelopeType = Tack.GetIEnvelopeType(eventKey); long ID = Tack.GetStorageID(eventKey); IChatMessageEnvelope eventSubject_ChatMessageEnvelope = _chatMessageEnvelopeFactory.InstantiateIEnvelope(); eventSubject_ChatMessageEnvelope.ChatMessageID = ID; IChatMessageEnvelope chatMessageEnvelopeFromSkyWatch = GetByID(eventSubject_ChatMessageEnvelope); _skyWatchQueue.Enqueue(chatMessageEnvelopeFromSkyWatch); } } catch (Exception ex) { throw new ApplicationException(ex.Message, ex); } } }