protected void ReportError(TestPosition position, Exception error) { _errorAccumulator.AddError(position, error); while (error != null && position != null && position.IsOnPathTo(_targetPosition)) { _runningLock.PassAndWaitForTurn(); } }
public Exception PrepareForTestPosition(TestPosition position) { Exception existingError = null; if (position == null) { throw new ArgumentException("Parameter is required", "position"); } _targetPosition = position; if (_visitor.SetTargetPosition(position, out existingError)) { return(existingError); } do { if (_thread == null) { _thread = new Thread(ThreadProc); _thread.Start(); } _runMutex.PassAndWaitForTurn(); } while (!_visitor.SetTargetPosition(position, out existingError)); return(existingError); }