/// <summary> /// Construtor padrão. /// </summary> /// <param name="taskWaiteTimeout"></param> /// <param name="logger"></param> internal WriteBehindAsyncProcessor(long taskWaiteTimeout, ILogger logger) { _logger = logger; _worker = null; _timeout = (int)taskWaiteTimeout; _statusMutex = new object(); _processMutex = new object(); _isDisposing = false; _queue = new WriteBehindQueue(0x100); }
/// <summary> /// Remove a tarefa da fila. /// </summary> /// <param name="taskId">Identificador da tarefa.</param> internal void Dequeue(string taskId) { lock (this) { IWriteBehindTask task = _queue.Peek(); if ((task != null) && (task.TaskId == taskId)) { _queue.Dequeue(); } else { var queue = new WriteBehindQueue(_queue); for (int i = 0; i < _queue.Count; i++) { task = queue.Dequeue(); if ((task != null) && (task.TaskId == taskId)) { _queue = queue; break; } } } } }