gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:12:07 24 4
gpt4 key购买 nike

在我的 WP8 应用程序中,我使用所有传感器。加速度计、指南针(来自 Windows.Devices.Sensors 和 Microsoft.Devices.Sensors)和倾角计。
一切正常,直到我按下 window 按钮,然后是 返回 按钮。
我得到一个带有 的全黑屏“正在恢复...” 消息,没有任何 react 。一旦我遇到异常(仅从 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)}

有人遇到过这个异常(exception)吗?

或者是否有在 wp8 应用程序生命周期中正确使用传感器的最佳实践?

谢谢

最佳答案

这个问题比我想象的要复杂。我在这方面做了很多工作。我分享我的发现,因为我认为我的经验也可以帮助以后的其他人。

我通过服务类使用传感器:这些类更新我的虚拟机,在虚拟机中我使用我的 DispatcherHelper 在 UI 上更新这些。我知道如果我想更新传感器的 valuechanged 事件中的 UI 绑定(bind)属性,我需要在事件处理程序中使用 dispatcherhelper 调用此更新,但我不知道如果它们与 VM 而不是 Views 通信时它们的行为如何。当我启动应用程序时,如果传感器具有新值,我在更新 UI 时没有任何问题。在这种情况下,我唯一的问题是,如果我想停用(按下 Windows 按钮)并激活(按下后退按钮)我的应用程序,我也不异常(exception),我没有丢失调试 session ,但只有一个带有“正在恢复”的黑页...”文本和运行进度条,什么也没发生。

我错过的是跨线程/访问异常。如果我使用 UI 绑定(bind)数据执行此操作,则会引发异常,但在这种情况下不会。

另一件事:加速度计(我有一个只与加速度计一起工作的版本)与模拟器一起工作,但在设备上却不行。我认为模拟器试图通过返回值来模拟加速器,但不是以正确的方式(没有线程问题)。

解决方案

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

关于windows-phone-8 - WP8 应用程序使用传感器恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com