2011-05-26 43 views
3

在下面的代码中,如果发生摇动事件,您可以看到我用来调用页面的代码。然而,页面弹出,但同时应用程序冻结,我不能做任何进一步的用户输入,例如点击一个按钮。从Accelerometer.ReadingChanged调用NavigationService.Navigate会引发NotSupportedException

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

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

回答

7

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

void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e) 
{ 
    //double X, Y, Z; 
    if (e.X > 1.5) 
    { 
     accelerometer.ReadingChanged -= accelerometer_ReadingChanged; 

     Dispatcher.BeginInvoke(() => {  
      NavigationService.Navigate(new Uri("/Bars/DetailBar.xaml", UriKind.Relative)); 
     }); 

    } 
} 
相关问题