IDisposable SubscribeLocal(SecsEventSubscription subscription) { var handler = new Action <SecsMessage>(msg => { #region event action var filter = subscription.Filter; try { if (msg.IsMatch(filter)) { EapLogger.Info("event[" + filter.Name + "] >> EAP"); msg.Name = filter.Name; subscription.Handle(msg); } } catch (Exception ex) { EapLogger.Error("event[" + filter.Name + "] EAP process Error!", ex); } #endregion }); _eventHandlers.AddHandler(subscription.GetKey(), handler); EapLogger.Notice("EAP subscribe event " + subscription.Filter.Name); return(new LocalDisposable(() => { _eventHandlers.RemoveHandler(subscription.GetKey(), handler); EapLogger.Notice("EAP unsubscribe event " + subscription.Filter.Name); })); }