private async Task <byte[]> TakePhoto() { try { _takePhotoEnable = false; TakePhotoCommand.RaiseCanExecuteChanged(); _logger.Trace("Синхронизация потоков при фотографировании."); _cameraStreamSynchronize.WaitOne(); _logger.Trace("Синхронизация потоков при фотографировании завершена."); var copyLiveViewStream = LiveViewImageStream; await Task.Delay(TimeSpan.FromSeconds(2)); var stream = await _imageProcessor.TakeTestPictureAsync(copyLiveViewStream, _mappingEngine.Map <CameraSettingsDto>(CameraSettings)); _logger.Trace("Свойство LiveView обновилось значением {0}.", stream.Length); LiveViewImageStream = stream; for (var j = 5; j >= 0; j--) { TestPhotoTimeEllapsed = j; await Task.Delay(TimeSpan.FromSeconds(1)); } CameraSettings.SetCameraSettings(); _logger.Trace("Запуск LiveView"); StartLiveView(false); _takePhotoEnable = true; TakePhotoCommand.RaiseCanExecuteChanged(); return(stream); } catch (Exception ex) { _takePhotoEnable = true; MessageBox.Show("Упс, сфотографироваться не удалось.=("); _logger.Error(ex, "Ошибка при фотографировании"); return(await Task.FromResult(new byte[] { })); } }