private void CaptureAllScreens() { Task.Run(async() => { await Task.Delay(500); var screenshots = _machineContext .CaptureAllScreens() .ToList(); var width = 0; var height = 0; foreach (var image in screenshots) { width += image.Width; height = image.Height > height ? image.Height : height; } _screenshot = new Bitmap(width, height); using (var graphics = Graphics.FromImage(_screenshot)) { var localWidth = 0; foreach (var image in screenshots) { graphics.DrawImage(image, localWidth, 0); localWidth += image.Width; } } var bitmapSource = _imageService.GetBitmapSource(_screenshot); bitmapSource.Freeze(); Dispatcher.CurrentDispatcher.Invoke(() => { WindowVisibility = Visibility.Visible; CapturedImage = bitmapSource; IsLoading = false; }); var ocrResult = await _OCRService.GetText(SelectedOCRLanguage, _screenshot); Dispatcher.CurrentDispatcher.Invoke(() => { OCRResult = ocrResult; IsOCRLoading = false; }); }); WindowVisibility = Visibility.Hidden; }