c# – 从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”.出了什么问题?

解决方法

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

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

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

    } 
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...