gpt4 book ai didi

multithreading - 为什么在使用UI时线程会停止

转载 作者:行者123 更新时间:2023-12-03 13:12:35 25 4
gpt4 key购买 nike

我正在构建一个简单的应用程序,该应用程序会根据环境光来改变行为。该应用程序运行良好,并且勒克斯值已在显示屏上更新。问题是,如果我更改了ui对象的不透明度,那么我将不再获得任何传感器更新(或崩溃),这取决于我要执行的操作。这是线程问题吗,因为我不熟悉WP8.1,并且花了很多时间试图理解这一点。

相似的例子:
http://developer.nokia.com/community/wiki/Using_Windows_phone_8.1_light_sensor

这是我初始化传感器的方式:

// Get the ambient light sensor up and running. 500ms interval.
var sensor = Windows.Devices.Sensors.LightSensor.GetDefault();
if (sensor == null)
{
return;
}
sensor.ReportInterval = 500;
sensor.ReadingChanged += OnLightSensorReadingChanged;

这是我获取传感器读数更新的方式:
        void OnLightSensorReadingChanged(Windows.Devices.Sensors.LightSensor sender, Windows.Devices.Sensors.LightSensorReadingChangedEventArgs args)
{
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
LuxReading.Text = "Lux: " + args.Reading.IlluminanceInLux.ToString();
);
}

我可以看到,每当传感器值更改时,就会生成并退出线程。

我在用户界面上所做的任何事情都会冻结读数
private void Button_Click(object sender, RoutedEventArgs e)
{
mypicture.Opacity = 0.5;
}

我想念什么?我应该以某种方式使用调度程序来更改不透明度吗?

最佳答案

这不是一个实际的答案-只是确认代码可以开始使用。现在可以使用了。我不知道为什么以前不起作用,但现在起作用了。我还对代码进行了一些更改,因此这是一个工作示例:

创建实际的传感器

public sealed partial class MainPage : Page
{
LightSensor sensor;
...

protected override void OnNavigatedTo(NavigationEventArgs e)
{
// Get the ambient light sensor up and running. 500ms polling interval.
sensor = LightSensor.GetDefault();
sensor.ReportInterval = 500; // optional, make sure it's above minreportinterval
sensor.ReadingChanged += sensor_ReadingChanged;
if (sensor == null)
{
return;
}
}

事件(独立线程)
private void sensor_ReadingChanged(LightSensor sender, LightSensorReadingChangedEventArgs args)
{

Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
LuxReading.Text = "Lux: " + args.Reading.IlluminanceInLux.ToString();
UiUpdate();
}
);

}

不包括在内,但从应用程序导航时,如果使用非默认值,请记住将ReportInterval设置为零。

感谢您的所有帮助。

关于multithreading - 为什么在使用UI时线程会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643812/

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