コード例 #1
0
ファイル: TaskTimerFactory.cs プロジェクト: maximmass/DReAM
 void ITaskTimerOwner.AddToQueue(TaskTimer timer, TaskEnv env, TaskTimerStatus next)
 {
     env.Acquire();
     if(timer.Env != null) {
         timer.Env.Release();
     }
     if(_running) {
         lock(_queue) {
             timer.Env = env;
             timer.SetStatus(next);
             _queue.Enqueue(timer);
         }
     } else {
         env.Release();
         timer.Env = null;
         timer.SetStatus(TaskTimerStatus.Done);
     }
 }
コード例 #2
0
ファイル: TaskTimerFactory.cs プロジェクト: maximmass/DReAM
 void ITaskTimerOwner.AddToPending(TaskTimer timer, TaskEnv env, TaskTimerStatus next)
 {
     env.Acquire();
     if(timer.Env != null) {
         timer.Env.Release();
     }
     if(_running) {
         lock(_pending) {
             timer.Env = env;
             timer.SetStatus(next);
             _pending[timer] = null;
         }
     } else {
         env.Release();
         timer.Env = null;
         timer.SetStatus(TaskTimerStatus.Done);
     }
 }