从Accelerometer.ReadingChanged调用NavigationService.Navigate会抛出NotSupportedException

在下面,您可以看到我在发生震动事件时用来调用页面的代码。 但是,页面弹出,但在同一时刻应用程序冻结,我无法进行任何进一步的用户输入,例如单击按钮。

void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e) { //double X, Y, Z; if (eX > 1.5) { Dispatcher.BeginInvoke( () => { NavigationService.Navigate(new Uri("/Bars/DetailBar.xaml", UriKind.Relative)); } ); } } 

调试器告诉我,“NavigationFailed”并且存在“System.NotSupportedException”。 出了什么问题?

读数可能发生得太快,导致多次导航发生。 尝试取消订阅活动:

 void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e) { //double X, Y, Z; if (eX > 1.5) { accelerometer.ReadingChanged -= accelerometer_ReadingChanged; Dispatcher.BeginInvoke( () => { NavigationService.Navigate(new Uri("/Bars/DetailBar.xaml", UriKind.Relative)); }); } }