internal void InternalRun()
 {
     FCurrent = this;
     try
     {
         this.OnStarted();
         try
         {
             this.FStatus = TaskStatus.Running;
             this.Run();
             this.FStatus = ((this.FInternalState & InternalState.CancellationConfirmed) > 0) ? TaskStatus.Canceled : TaskStatus.RanToCompletion;
         }
         catch (OperationCanceledException)
         {
             this.FStatus = TaskStatus.Canceled;
         }
         catch (System.Exception exception)
         {
             this.FException = exception;
             this.FStatus = TaskStatus.Faulted;
             if (!this.OnError(exception))
             {
                 throw;
             }
         }
         finally
         {
             this.OnFinished();
         }
     }
     finally
     {
         FCurrent = null;
     }
 }
 public override void QueueTask(SimpleTask item)
 {
     base.Queue.Enqueue(item);
     if (!this.IdleEventAssigned)
     {
         Application.Idle += new EventHandler(this.ApplicationIdle);
         this.IdleEventAssigned = true;
     }
 }
 public override void QueueTask(SimpleTask item)
 {
     lock (base.Queue)
     {
         base.Queue.Enqueue(item);
         if (!this.InProgress)
         {
             this.InProgress = true;
             this.StartWorkThread();
         }
         else
         {
             Monitor.Pulse(base.Queue);
         }
     }
 }