Я пытаюсь изменить CameraType (FrontFacing/Primary) моей камеры в своем приложении.Windows Phone change CameraType
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Canvas x:Name="viewfinderCanvas" Width="720" Height="480"
HorizontalAlignment="Left" >
<!--Camera viewfinder -->
<Canvas.Background>
<VideoBrush x:Name="viewfinderBrush" />
</Canvas.Background>
<!-- Brackets for Touch Focus -->
<TextBlock
x:Name="focusBrackets"
Text="[ ]"
FontSize="40"
Visibility="Collapsed"/>
</Canvas>
<!--Button StackPanel to the right of viewfinder>-->
<StackPanel Grid.Column="1" >
<Button Content="Front" Name="btCameraType" Click="changeFacing_Clicked" FontSize="26" FontWeight="ExtraBold" Height="75"/>
</StackPanel>
<!--Used for debugging >-->
<TextBlock Height="40" HorizontalAlignment="Left" Margin="8,428,0,0" Name="txtDebug" VerticalAlignment="Top" Width="626" FontSize="24" FontWeight="ExtraBold" />
</Grid>
И это код Сзади:
private void changeFacing_Clicked(object sender, RoutedEventArgs e)
{
if (cam.CameraType == CameraType.FrontFacing)
cam = new Microsoft.Devices.PhotoCamera(CameraType.Primary);
else
cam = new Microsoft.Devices.PhotoCamera(CameraType.FrontFacing);
viewfinderBrush.Dispatcher.BeginInvoke(delegate()
{
viewfinderBrush.SetSource(cam);
});
}
Так что я на самом деле просто изменение CameraType, когда пользователь нажимает на кнопку. Проблема в том, что, когда пользователь несколько раз нажимает кнопку (так что 5 раз за 2 секунды), программа не может справиться с ней, и она перестает работать ... Любое решение о том, как избежать этой проблемы?
Я также попытался ен-/отключить кнопку, но я все еще могу нажать на кнопку ..
Я также думал о попытке - поймать, но это тот же самый результат. Нажатие на кнопку (чтобы изменить CameraType) много раз заморозит приложение. Там нет исключения, нет «ошибки отладки» .... ничего. Он просто зависает/перестает работать (но приложение все еще открыто), а Visual Studio также не дает никаких ошибок или видит, что приложение заморожено, поэтому я должен остановить приложение вручную, нажав «Остановить отладку». --- Это действительно происходит, когда я нажимаю кнопку, когда новый CameraType не был установлен. – Rudi
Вау ... в этом случае еще более уродливым решением было бы проверить, не произошло ли последнее изменение за X секунд до этого. –
Да, это будет одно «уродливое» решение ...:/... Я также попытался использовать System.Threading.Thread.Sleep (2500) в 'finally {}', но CameraType изменяется ПОСЛЕ сна ? ... Не понимаю. Во всяком случае, я попытаюсь использовать метод с проверкой X секунд или, возможно, просто использовать Первичную камеру, если она не работает ... – Rudi