private void SafeHandleEventAndSetResult(string signaledEventKey) { lock (_locker) { if (_handlerCalled) { return; } _handlerCalled = true; foreach (var eventKey in _eventKeys) { _signalBus.RemoveHandler(eventKey, Handler); } if (_canceled) { Tcs.SetCanceled(); } else { Tcs.SetResult(new SignalResult { TimedOut = _timedOut, EventKey = signaledEventKey }); } Timer timer; if (_timers.TryRemove(_timerKey, out timer)) { timer.Dispose(); } } }
public void RemoveHandler(string eventKey, EventHandler <SignaledEventArgs> handler) { EventHandler <SignaledEventArgs> tracedHandler; if (_cache.TryRemove(Tuple.Create(eventKey, handler), out tracedHandler)) { _bus.RemoveHandler(eventKey, tracedHandler); } }
private void SafeHandleEventAndSetResult(string signaledEventKey) { // Only want to handle the signaled event once, then remove the handler from the bus if (_handlerCalled) { return; } lock (_locker) { if (_handlerCalled) { return; } _handlerCalled = true; } // TODO: Change this to SignalBus.RemoveHandler(IEnumerable<string> eventKeys, Func handler) // Let the individual SignalBus implementations deal with how do that foreach (var eventKey in _eventKeys) { _signalBus.RemoveHandler(eventKey, Handler); } if (_canceled) { Tcs.SetCanceled(); } else { Tcs.SetResult(new SignalResult { TimedOut = _timedOut, EventKey = signaledEventKey }); } _signalActions.Remove(this); }
private void SafeHandleEventAndSetResult(string signaledEventKey) { // Only want to handle the signaled event once, then remove the handler from the bus if (_handlerCalled) { return; } lock (_locker) { if (_handlerCalled) { return; } _handlerCalled = true; } foreach (var eventKey in _eventKeys) { _signalBus.RemoveHandler(eventKey, Handler); } if (_canceled) { Tcs.SetCanceled(); } else { Tcs.SetResult(new SignalResult { TimedOut = _timedOut, EventKey = signaledEventKey }); } _signalActions.Remove(this); }
private void SafeHandleEventAndSetResult(string signaledEventKey) { // Only want to handle the signaled event once, then remove the handler from the bus if (_handlerCalled) { return; } lock (_locker) { if (_handlerCalled) { return; } _handlerCalled = true; } _signalBus.RemoveHandler(_eventKeys, Handler); if (_canceled) { Tcs.SetCanceled(); } else if (_timedOut) { Tcs.SetResult(_timedOutResult); } else { Tcs.SetResult(new SignalResult { EventKey = signaledEventKey }); } _removeCallback(this); }