我正在制作一张拍摄照片的wp8-app,然后带你到下一个屏幕来决定你是否喜欢它。 目前的做法是:
private void ShutterButton_Click(object sender, RoutedEventArgs e)
{
if (cam != null)
{
try
{
cam.CaptureImage();
await Task.Delay(1500);
NavigateFront();
}
catch (Exception ex)
{
...
}
}
}
public void NavigateFront()
{
string naviString = "/confirmPicture.xaml?parameter=" + fileName.ToString();
_rootFrame.Navigate(new Uri(naviString, UriKind.Relative));
}
在我的Lumia 520上,它有时会崩溃。如果我将等待时间增加到2,5秒就可以了。但当然这不应该是这样做的方式。
如果我抓住void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
- 事件并尝试在完成所有操作并且所有流都已关闭后进行导航,我仍然会进入NavigateFailed
状态并且应用程序崩溃。
我的问题是:是否还有其他有用的事件可以确保所有工作都完成,而且我可以在不使用基于静态时间的值的情况下导航?
答案 0 :(得分:1)
可以使用PhotoCamera进行导航,只需订阅其CaptureCompleted事件处理程序
即可cam.CaptureCompleted += new EventHandler<CameraOperationCompletedEventArgs>(camera_CaptureCompleted);
这将是事件
void camera_CaptureCompleted(object sender, CameraOperationCompletedEventArgs e)
{
try
{
Deployment.Current.Dispatcher.BeginInvoke(delegate()
{
try
{
cam.Dispose();
NavigationService.Navigate(new Uri("URI nething", UriKind.Relative));
}
catch (Exception)
{
MessageBox.Show("Problem occured!!");
}
});
}
catch
{
MessageBox.Show("Problem in camer_capturecompleted");
}
}
我在我的一个针对Windows Phone 7的应用中做到了这一点。检查这是否适合您。