Ejemplo n.º 1
0
		private void InternalStop()
		{
			if (_retrieveThreadPool != null)
			{
				_retrieveThreadPool.Stop(false);
				_retrieveThreadPool = null;
			}

			if (_imageBoxEnumerator != null)
			{
				_imageBoxEnumerator.Dispose();
				_imageBoxEnumerator = null;
			}
		}
Ejemplo n.º 2
0
		private void InternalStart()
		{
            int retrieveConcurrency = Prefetch.Default.RetrieveConcurrency;
			if (retrieveConcurrency == 0)
				return;

			_imageBoxEnumerator = new ViewerFrameEnumerator(ImageViewer,
                Math.Max(Prefetch.Default.SelectedWeighting, 1),
                Math.Max(Prefetch.Default.UnselectedWeighting, 0),
                Prefetch.Default.ImageWindow);

			_retrieveThreadPool = new BlockingThreadPool<Frame>(_imageBoxEnumerator, RetrieveFrame);
			_retrieveThreadPool.ThreadPoolName = "Retrieve";
			_retrieveThreadPool.Concurrency = retrieveConcurrency;
			_retrieveThreadPool.ThreadPriority = ThreadPriority.BelowNormal;
			_retrieveThreadPool.Start();
			
		}
		protected override void Stop()
		{
			if (_retrieveThreadPool != null)
			{
				_retrieveThreadPool.Stop(false);
				_retrieveThreadPool = null;
			}

			if (_decompressThreadPool != null)
			{
				_decompressThreadPool.Stop(false);
				_decompressThreadPool = null;
			}

			if (_imageBoxEnumerator != null)
			{
				_imageBoxEnumerator.Dispose();
				_imageBoxEnumerator = null;
			}

			_isStarted = false;
		}
		protected override void Start()
		{
			if (!_enabled)
				return;

			_isStarted = true;

			_imageBoxEnumerator = new ViewerFrameEnumerator(ImageViewer, SelectedImageBoxWeight, UnselectedImageBoxWeight, FrameLookAheadCount.GetValueOrDefault(-1), CanRetrieveFrame);

			_retrieveThreadPool = new FrameBlockingThreadPool(_imageBoxEnumerator, DoRetrieveFrame)
			                      	{
			                      		ThreadPoolName = GetThreadPoolName("Retrieve"),
			                      		Concurrency = RetrievalThreadConcurrency,
			                      		ThreadPriority = _retrievalThreadPriority
			                      	};
			_retrieveThreadPool.Start();

			if (DecompressionThreadConcurrency <= 0)
				return;

			_decompressThreadPool = new SimpleBlockingThreadPool(DecompressionThreadConcurrency)
			                        	{
			                        		ThreadPoolName = GetThreadPoolName("Decompress"),
			                        		ThreadPriority = _decompressionThreadPriority
			                        	};
			_decompressThreadPool.Start();
		}