private void CreateTask(Action action)
 {
     PoormansThreadPool.EnqueueTaskInternal(() =>
     {
         try
         {
             action();
         }
         catch (Exception exception)
         {
             lock (_exceptionMonitor)
                 _exceptions.Add(exception);
         }
         finally
         {
             HasCompleted = true;
             _synchronizer.Signal();
         }
     });
 }
 protected override void QueueTask(Task task)
 {
     PoormansThreadPool.EnqueueTaskInternal(() => base.TryExecuteTask(task));
 }