Мое приложение UWP выдает "UnhandledException" с сообщением:
Предоставленный номер потока недействителен. Состояние предварительного просмотра.
Приложение выполняет 2 операции:
- сделать снимок (с помощью MediaCapture и с предварительным просмотром в CaptureElement)
- сканирование: чтение QR-кода (используя Zxing.Net.Mobile)
2 операции отлично работают по отдельности.
Проблема возникает, когда я сначала «сканирую» (с предварительным просмотром с камеры, управляемой Zxing), затем закрываю предварительный просмотр «сканирования», открываю страницу предварительного просмотра фотографий и поворачиваю телефон. «Вращение» вызывает исключение.
Я написал очень простое приложение для воспроизведения исключения:
MainPage.xaml
<Button Content="Scan" Click="Scan_Click" />
<Button Content="Photo" Click="Photo_Click" />
MainPage.xaml.cs
private async void Scan_Click(object sender, RoutedEventArgs e)
{
MobileBarcodeScanner scanner = new MobileBarcodeScanner();
var result = await scanner.Scan();
}
private void Photo_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(PhotoPage));
}
PhotoPage.xaml
<CaptureElement Name="PreviewControl" Stretch="Uniform"/>
PhotoPage.xaml.cs
MediaCapture _mediaCapture;
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
DeviceInformationCollection videoCaptureDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
var camera = (from webcam in videoCaptureDevices
where webcam.EnclosureLocation != null
&& webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back
select webcam).FirstOrDefault();
_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = camera.Id });
PreviewControl.Source = _mediaCapture;
await _mediaCapture.StartPreviewAsync();
}
Действия по воспроизведению ошибки следующие:
- нажмите кнопку сканирования
- нажать кнопку "Назад" телефона
- нажмите кнопку "Фото"
- повернуть телефон
Благодарю вас!