public void CopyFrom(Array queue)
 {
     lock (_queue)
     {
         if ((queue.Length > 0) && ((queue.Length + _queue.Count) > 0))
         {
             Array array = new WriteBehindAsyncProcessor.IWriteBehindTask[_queue.Count + queue.Length];
             queue.CopyTo(array, 0);
             _queue.CopyTo(array, queue.Length);
             _queue = new ArrayList(array);
         }
     }
 }
 public void UpdateState(string source)
 {
     lock (_queue)
     {
         for (int i = 0; i < _queue.Count; i++)
         {
             WriteBehindAsyncProcessor.IWriteBehindTask task = _queue[i] as WriteBehindAsyncProcessor.IWriteBehindTask;
             if ((task.Source == source) && (task.State == WriteBehindAsyncProcessor.TaskState.Wait))
             {
                 task.State = WriteBehindAsyncProcessor.TaskState.Execute;
                 _queue[i]  = task;
             }
         }
     }
 }
 public void Remove(string taskId)
 {
     lock (_queue)
     {
         for (int i = _queue.Count - 1; i >= 0; i--)
         {
             WriteBehindAsyncProcessor.IWriteBehindTask task = _queue[i] as WriteBehindAsyncProcessor.IWriteBehindTask;
             if (task.TaskId == taskId)
             {
                 _queue.RemoveAt(i);
                 break;
             }
         }
     }
 }
 public void UpdateState(string taskId, WriteBehindAsyncProcessor.TaskState state)
 {
     lock (_queue)
     {
         for (int i = _queue.Count - 1; i >= 0; i--)
         {
             WriteBehindAsyncProcessor.IWriteBehindTask task = _queue[i] as WriteBehindAsyncProcessor.IWriteBehindTask;
             if (task.TaskId == taskId)
             {
                 task.State = state;
                 _queue[i]  = task;
                 break;
             }
         }
     }
 }
 public void UpdateState(Hashtable states)
 {
     lock (_queue)
     {
         int count = states.Count;
         int num   = 0;
         int num2  = 0;
         while (num < _queue.Count)
         {
             WriteBehindAsyncProcessor.IWriteBehindTask task = _queue[num] as WriteBehindAsyncProcessor.IWriteBehindTask;
             if (states.ContainsKey(task.TaskId))
             {
                 task.State  = (WriteBehindAsyncProcessor.TaskState)states[task.TaskId];
                 _queue[num] = task;
                 if (states.Count == ++num2)
                 {
                     break;
                 }
             }
             num++;
         }
     }
 }
 public void Enqueue(WriteBehindAsyncProcessor.IWriteBehindTask task)
 {
     lock (_queue)
         _queue.Add(task);
 }