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);
 }