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); } }