private void ProcessJobs(object state) { lock (_syncRoot) { if (_queue.Count == 0) { return; } _currentJob = _queue.Peek(); } while (true) { _currentJob.RaisePerform(); _event.Set(); lock (_syncRoot) { var removedJob = _queue.Dequeue(); OnJobRemoved(new JobEventArgs(removedJob)); if (_queue.Count == 0) { OnProgressChanged(new JobEventArgs(null)); break; } _currentJob = _queue.Peek(); } } lock (_syncRoot) { _currentJob = null; } }
private void ProcessJobs(object state) { lock (_syncRoot) { if (_queue.Count == 0) return; _currentJob = _queue.Peek(); } while (true) { _currentJob.RaisePerform(); _event.Set(); lock (_syncRoot) { var removedJob = _queue.Dequeue(); OnJobRemoved(new JobEventArgs(removedJob)); if (_queue.Count == 0) { OnProgressChanged(new JobEventArgs(null)); break; } _currentJob = _queue.Peek(); } } lock (_syncRoot) { _currentJob = null; } }