public void RegisterPersistentTask(TaskPredicate predicate, Task task, TaskError taskError, object userObject)
 {
     lock ( mMutex )
     {
         mPersistentCommandList.Add(new Command(predicate, task, taskError, userObject));
     }
 }
 public Command(TaskPredicate predicate, Task task, TaskError taskError, object userObject)
 {
     mPred       = predicate;
     mTask       = task;
     mError      = taskError;
     mUserObject = userObject;
 }
 public void RegisterOneShotTask(TaskPredicate predicate, Task task, TaskError taskError, object userObject)
 {
     lock ( mMutex )
     {
         mOneShotCommandQueue.Enqueue(new Command(predicate, task, taskError, userObject));
     }
 }