private void InternalStop() { if (_retrieveThreadPool != null) { _retrieveThreadPool.Stop(false); _retrieveThreadPool = null; } if (_imageBoxEnumerator != null) { _imageBoxEnumerator.Dispose(); _imageBoxEnumerator = null; } }
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(); }