【问题标题】:Windows Phone app using Light sensors closes after few seconds使用光传感器的 Windows Phone 应用程序在几秒钟后关闭
【发布时间】:2014-08-18 15:43:39
【问题描述】:

我需要有关 Windows Phone 问题的帮助。我正在对传感器 (Windows.Devices.Sensors) 进行一些测试,并尝试做一些无用但有趣的事情:阅读音乐(使用 MediaElement)并根据光传感器测量的亮度改变音量!

在几秒钟内一切正常,突然间,应用程序在我的测试设备(带有 WP 8.1 的 Lumia 925)上关闭,但测试仍在 Visual Studio 中进行。谁能告诉我我做错了什么?

private DispatcherTimer timer;

public MainPage()
{
    this.InitializeComponent();
    this.NavigationCacheMode = NavigationCacheMode.Required;

    // Timer
    timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromMilliseconds(10.0);
    timer.Tick += timer_Tick;
    timer.Start();
}

void timer_Tick(object sender, object e)
{
    var lightSensor = LightSensor.GetDefault();
    var lightSensorValue = Math.Truncate(lightSensor.GetCurrentReading().IlluminanceInLux);
    TextBlock_SensorValue.Text = lightSensorValue.ToString();
    MediaElement_music.Volume = lightSensorValue > 100 ? 1.0 : lightSensorValue / 100.0;
}

【问题讨论】:

  • 你试过调低刷新率吗?每 10 毫秒是相当频繁的
  • @thumbmunkeys 我会试试看,10ms 确实很常见,但奇怪的是应用程序自行关闭而没有在 Visual Studio 上报告错误。
  • 当我使用本页示例中描述的方法时:msdn.microsoft.com/en-us/library/ie/…,一切似乎都很好。即使我的测试代码不是最优的,我也无法解释这个问题!
  • 您在 Visual Studio 的“输出”窗口中看到了什么有趣的东西吗?我也很惊讶您可以通过该方法设置 TextBlock 的 Text 属性 - 通常您必须使用 Dispatcher 确保您在 UI 线程上...
  • @gregstoll Visual Studio 上没有出现错误,当应用程序在我的手机上关闭时,一切都继续在该端运行!关于线程,在我看来,使用 DispatcherTimer,你没有这个问题(与引发线程问题的基本计时器相反),但我不确定......

标签: c# windows-phone-8 windows-phone


【解决方案1】:

查看您的代码时会出现一些问题。您为什么使用计时器而不使用您在评论中提供的example 中描述的事件?

对于您的 Visual Studio 问题,请检查您是否在 Debug / Exceptions... 下为 CLR 启用了Thrown 选项。 VS 将中断您可能看不到的异常。

另外需要注意的是,您的 10 MS 计时器非常快,您的处理程序代码可能会被多次调用,这可能会导致一些尴尬的副作用。

编辑:顺便说一句,我无法重现您的错误。我的应用程序从未在几分钟内关闭/崩溃。在带有 WP Silverlight 8.1 项目的 Lumia 920 上进行了测试。唯一不同的是我这边的页面缓存没有开启。

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多