错误处理剩余电量百分比变化事件

时间:2014-05-22 07:24:13

标签: windows-phone-8

我想在电池百分比发生变化时更新textblock。我在Windows.Phone.Devices.Power.Battery命名空间中找到了事件RemainingChargePercentChanged。但是每当调用eventhandler并且我尝试更新textblock时,我都会遇到错误。 错误是:

System.UnauthorizedAccessException中出现System.Windows.ni.dll类型的例外情况,但未在用户代码中处理。

我是否要在AppManifest文件中选择任何功能?如果是,那该怎么办?

任何帮助将不胜感激。  以下是我的代码,

public partial class MainPage : PhoneApplicationPage
{
    private readonly Battery _battery;
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        _battery = Battery.GetDefault();
        _battery.RemainingChargePercentChanged += OnRemainingChargePercentChanged;
        UpdateUI();    
    }

    private void OnRemainingChargePercentChanged(object sender, object e)
    {
        UpdateUI();
    }

    private void UpdateUI()
    {
        sampletext.Text = string.Format("{0} %", _battery.RemainingChargePercent);
    }
}

1 个答案:

答案 0 :(得分:0)

问题是在另一个线程上调用事件处理程序,如果你读取了异常消息,它会说Invalid cross-thread access.

解决方案是使用Text更改UI线程上的Dispatcher属性,如下所示:

Dispatcher.BeginInvoke(() => { 
    sampletext.Text = string.Format("{0} %", _battery.RemainingChargePercent); 
});

编辑:或您的整个UpdateUI函数调用:

private void OnRemainingChargePercentChanged(object sender, object e)
{
    Dispatcher.BeginInvoke(() => { 
        UpdateUI();
    });
}