Пример #1
0
		public void Run(StopWatch stopWatch)
		{
			stopWatch.Start();

			CheckPoint point = stopWatch.Mark("Correlated Requests");
		    CheckPoint responsePoint = stopWatch.Mark("Correlated Responses");

		    var pool = new ManagedThreadPool<CorrelatedController>(DoWorker, 10, 10);
            try
            {

                for (int index = 0; index < _attempts; index++)
                {
                    var controller = new CorrelatedController(_bus, OnSuccess, OnTimeout);
                    pool.Enqueue(controller);
                }

                point.Complete(_attempts);

                _finishedEvent.WaitOne(TimeSpan.FromSeconds(60), true);

                responsePoint.Complete(_timeouts + _successes);
            }
            finally
            {
                pool.Dispose();
            }

			Console.WriteLine("Attempts: {0}, Succeeded: {1}, Timeouts: {2}", _attempts, _successes, _timeouts);

			stopWatch.Stop();
		}
        public void Run(StopWatch stopWatch)
        {
            stopWatch.Start();

            CheckPoint point         = stopWatch.Mark("Correlated Requests");
            CheckPoint responsePoint = stopWatch.Mark("Correlated Responses");

            var pool = new ManagedThreadPool <CorrelatedController>(DoWorker, 10, 10);

            try
            {
                for (int index = 0; index < _attempts; index++)
                {
                    var controller = new CorrelatedController(_bus, OnSuccess, OnTimeout);
                    pool.Enqueue(controller);
                }

                point.Complete(_attempts);

                _finishedEvent.WaitOne(TimeSpan.FromSeconds(60), true);

                responsePoint.Complete(_timeouts + _successes);
            }
            finally
            {
                pool.Dispose();
            }

            Console.WriteLine("Attempts: {0}, Succeeded: {1}, Timeouts: {2}", _attempts, _successes, _timeouts);

            stopWatch.Stop();
        }
        private void OnSuccess(CorrelatedController obj)
        {
            lock (_finishedEvent)
            {
                Interlocked.Increment(ref _successes);

                if (_timeouts + _successes == _attempts)
                {
                    _finishedEvent.Set();
                }
            }
        }
Пример #4
0
        private void OnTimeout(CorrelatedController obj)
		{
			lock (_finishedEvent)
			{
				Interlocked.Increment(ref _timeouts);

				if (_timeouts + _successes == _attempts)
					_finishedEvent.Set();
			}
		}
Пример #5
0
 private void DoWorker(CorrelatedController controller)
 {
     controller.SimulateRequestResponse();
 }
 private void DoWorker(CorrelatedController controller)
 {
     controller.SimulateRequestResponse();
 }