protected virtual void CloneTo(BaseThreadParam clon)
 {
     clon.time          = time;
     clon.QueueLevel    = QueueLevel;
     clon.finalCallback = finalCallback;
     clon.PropertyName  = PropertyName;
 }
 public AnimatorState Execute(WaitCallback queueMethod, BaseThreadParam queueMethodParam)
 {
     lock (this)
     {
         var state = new AnimatorState()
         {
             QueueMethod = queueMethod, QueueMethodParam = queueMethodParam
         };
         Add(state);
         if (!isCancel)
         {
             //Trace.WriteLine("Execute: run");
             Run(state);
         }
         //else
         //Trace.WriteLine("Execute: wait for cancel");
         return(state);
     }
 }
 public AnimatorState Queue(WaitCallback queueMethod, BaseThreadParam queueMethodParam, object queueOwner)
 {
     lock (this)
     {
         bool inQueue = Animators.Count > 0;
         var  state   = new AnimatorState()
         {
             InQueue = true, QueueMethod = queueMethod, QueueMethodParam = queueMethodParam, QueueOwner = queueOwner
         };
         Add(state);
         if (!inQueue && !isCancel)
         {
             //Trace.WriteLine("Queue: run");
             Run(state);
         }
         //else
         //Trace.WriteLine("Queue: wait");
         return(state);
     }
 }
 internal static AnimatorState Queue(object control, WaitCallback queueMethod, BaseThreadParam queueMethodParam, object queueOwner)
 {
     if (control == null)
     {
         return(null);
     }
     lock (animeControls)
     {
         ControlState controlState = GetControlState(control, queueMethodParam.queueName);
         return(controlState.Queue(queueMethod, queueMethodParam, queueOwner));
     }
 }