public QQActionEvent WaitFinalEvent() { if (EventQueue.IsAddingCompleted) { return(FinalEvent); } while (!Token.IsCancellationRequested) { try { var Event = WaitEvent(); if (IsFinalEvent(Event)) { EventQueue.CompleteAdding(); FinalEvent = Event; return(FinalEvent); } } catch (OperationCanceledException) { FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this); return(FinalEvent); } catch (Exception ex) { FinalEvent = new QQActionEvent(QQActionEventType.EvtError, ex); return(FinalEvent); } } FinalEvent = new QQActionEvent(QQActionEventType.EvtCanceled, this); return(FinalEvent); }