【发布时间】: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