public void OnSelectedArea(object sender, EventArgs e) { IsLoading = true; IsOCRLoading = true; WindowVisibility = Visibility.Visible; _windowsManager.CloseAll(); Task.Run(async() => { var rectangle = (System.Drawing.Rectangle)sender; _screenshot = _machineContext.CaptureScreenFragment(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height); var bitmapSource = _imageService.GetBitmapSource(_screenshot); bitmapSource.Freeze(); Dispatcher.CurrentDispatcher.Invoke(() => { CapturedImage = bitmapSource; IsLoading = false; OCRResult.Clear(); }); var ocrResult = await _OCRService.GetText(SelectedOCRLanguage, _screenshot); Dispatcher.CurrentDispatcher.Invoke(() => { OCRResult = ocrResult; IsOCRLoading = false; }); }); }