加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-phone-8 – 用传感器恢复WP8应用程序

发布时间:2020-12-14 03:51:22 所属栏目:Windows 来源:网络整理
导读:在我的WP8应用程序中,我使用所有传感器. Accelerometer,Compass(来自 Windows.Devices.Sensors和来自Microsoft.Devices.Sensors)和Inclinometer. 一切正常,直到我按下Windows按钮,然后按下后退按钮. 我得到一个带有“Resuming …”消息的全黑屏幕,没有任何反
在我的WP8应用程序中,我使用所有传感器. Accelerometer,Compass(来自 Windows.Devices.Sensors和来自Microsoft.Devices.Sensors)和Inclinometer.
一切正常,直到我按下Windows按钮,然后按下后退按钮.
我得到一个带有“Resuming …”消息的全黑屏幕,没有任何反应.一旦我得到一个例外(仅从5岁开始):

{System.Runtime.InteropServices.SEHException: External component has thrown an exception.
   at Microsoft.Devices.Sensors.SensorBase`1.PauseSensor()
   at Microsoft.Devices.Sensors.SensorBase`1.<>c__DisplayClass7.<.ctor>b__4(Object sender,NotificationCallbackEventArgs args)
   at Microsoft.Devices.Sensors.SensorCallback.MS.Internal.Interop.INotificationCallback.Pausing(XPauseType pauseType)
   at MS.Internal.Interop.NotificationService.NotificationPausing(XPauseType pauseType)
   at MS.Internal.FrameworkCallbacks.NotificationPausing(UInt32 pauseType)}

有人见过这个例外吗?

或者在wp8应用程序生命周期中是否有最佳的传感器正常工作?

谢谢

解决方法

这个问题比我想象的要复杂得多.我已经做了很多工作.我分享我发现的东西,因为我认为我的经验可以帮助后来的其他人.

我通过服务类使用传感器:这些类更新我的VM,在VM中我使用DispatcherHelper在UI上更新这些类.我知道是否要更新传感器的valuechanged事件中的UI绑定属性我需要在eventhandler中使用dispatcherhelper调用此更新,但我不知道的是,如果他们与VM而不是Views进行通信,他们的行为方式.当我启动应用程序时,如果传感器具有新值,我在更新UI时没有任何问题.我唯一的问题是在这种情况下,如果我想停用(按下Windows按钮)并激活(按下后退按钮)我的应用程序,我也没有例外,我没有丢失我的调试会话但只有一个黑色页面“恢复…“文本和正在运行的进度条,没有任何反应.

我错过的是一个crossthread / access异常.如果我使用UI绑定数据执行它会抛出异常,但在这种情况下它没有.

另一件事:加速度计(我的版本只与加速度计配合使用)与仿真器配合使用,但在设备上却没有.我认为模拟器试图通过返回值来模拟加速器,但不是以正确的方式(没有线程问题).

如果我在UI线程上的事件处理程序内更新(使用我自己的DispatcherHelper),一切正常.这是一个很好的经验教训,在与传感器和其他层/线程(VM,V)交互时要始终注意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读