internal void screenCaptureWorker_ScreenCaptureCompleted(object sender, ScreenCaptureCompletedArgs captureArgs)
        {
            if (captureArgs.ScreenBounds.Height == 0 || captureArgs.ScreenBounds.Width == 0)
            {
                return;
            }

            var imageStream = new MemoryStream(captureArgs.ScreenImageStream);

            ScreenCaptureQueue.Enqueue(new ScreenCapture()
            {
                ScreenMemoryStream = imageStream,
                RegionViewModels   = ViewModel.RegionControl.Regions,
                ScreenBounds       = captureArgs.ScreenBounds,
                CanvasBounds       = captureArgs.CanvasBounds,
                CreationTime       = DateTime.Now
            });
        }
        protected override void DoWork()
        {
            while (IsRunning)
            {
                if (ScreenCaptureQueue.IsEmpty)
                {
                    Wait(IDLE_TIMEOUT);
                    continue;
                }

                var screenCapture = ScreenCaptureQueue.Dequeue();

                foreach (var region in screenCapture.RegionViewModels)
                {
                    WaitForFreeWorker();
                    CreateWorker(screenCapture, region);
                }

                _oldScreenCaptures.Enqueue(screenCapture);
            }
        }