private async Task <IXBeeEvent> WaitEventAsync(Type eventClass, CancellationToken cancellationToken) { IXBeeEventListenerProperties xbeeEventListener = new XBeeEventListener(eventClass); // Register a listener AddEventListener(xbeeEventListener); // Wait for the event while (!_mainCancellationToken.IsCancellationRequested && !cancellationToken.IsCancellationRequested && !xbeeEventListener.Complete) { // wait until transaction is complete await Task.Delay(5); } // Remove the listener RemoveEventListener(xbeeEventListener); return(xbeeEventListener.ReceivedEvent); }
private async Task <IXBeeEvent> WaitEventAsync(Type eventClass) { IXBeeEventListenerProperties xbeeEventListener = new XBeeEventListener(eventClass); await _taskFactory.StartNew(() => { // Register a listener AddEventListener(xbeeEventListener); // Wait for the event lock (xbeeEventListener) { while (!xbeeEventListener.Complete) { // wait until transaction is complete } } // Remove the listener RemoveEventListener(xbeeEventListener); }); return(xbeeEventListener.ReceivedEvent); }