コード例 #1
0
        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[] { }));
            }
        }