public void It_should_not_decrement_OperationsRunning_below_zero() { var operationTracker = new OperationTracker(); operationTracker.EndOperation(); Assert.That(operationTracker.OperationsRunning, Is.EqualTo(0)); }
public void It_should_set_IsOperationRunning_to_true() { var operationTracker = new OperationTracker(); operationTracker.BeginOperation(); operationTracker.EndOperation(); Assert.That(operationTracker.IsOperationRunning, Is.False); }
public void It_should_decrement_OperationsRunning() { var operationTracker = new OperationTracker(); operationTracker.BeginOperation(); operationTracker.EndOperation(); Assert.That(operationTracker.OperationsRunning, Is.EqualTo(0)); }
public void It_should_invoke_setTargetPropertyAction_with_a_value_of_false() { var isOperationRunning = false; var operationTracker = new OperationTracker(value => { isOperationRunning = value; }); operationTracker.BeginOperation(); operationTracker.EndOperation(); Assert.That(isOperationRunning, Is.False); }
private void ConsumerThread() { _consumerThreadTracker.BeginOperation(); while (!_items.IsCompleted) { try { var item = _items.Take(); if (_processItem(item)) { Interlocked.Increment(ref _itemsSuccessful); } else { Interlocked.Increment(ref _itemsFailed); } var itemsProcessed = Interlocked.Increment(ref _itemsProcessed); var totalItems = Interlocked.Read(ref _totalItems); if (itemsProcessed > 0) { var progress = ((double)itemsProcessed / totalItems) * 100.0; if (progress > 100.0) { progress = 100; } Progress = progress; } else { Progress = 0; } //TODO: ConsumerThreadPool<T> - Raise Progress property changed? } catch (InvalidOperationException) { // Move along nothing to see here... } } _consumerThreadTracker.EndOperation(); //TODO: ConsumerThreadPool<T> - Raise IsCompleted property changed? Debug.WriteLine("ConsumerThread exiting... " + _consumerThreadTracker.OperationsRunning); }