比较每个tick的两个变量

时间:2017-02-06 20:47:14

标签: c#

我正在尝试编写一个简单的程序来检查电池状态。我有一个计时器,每秒都会打勾,我写了一些代码,但我认为它不是最有效的。 1.我不知道是不是这样,我怎么检查电池的百分比是否与之前一秒相同,是对的。 2.如果我没有检查MsgBox,那么Label2和MsgBox文本中的百分比信息不会更新。

    class Battery
    {
       public static int BatteryPercentage()
       {
           PowerStatus ps = SystemInformation.PowerStatus;

           int percentage = Convert.ToInt32(ps.BatteryLifePercent * 100);

           return percentage;
       }
    }

    public static class MyClass
    {
        public static int LastPer { get; set; }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int per = Battery.BatteryPercentage();
        label2.Text = per.ToString();
        progressBar1.Value = per;

        if (MyClass.LastPer == 0)
        {
            MyClass.LastPer = per;
        }
        else if (MyClass.LastPer > per && per <= 100)
        {
            MessageBox.Show("Battery is almost empty, remain " + per.ToString()  + "!" );
        }
    }

1 个答案:

答案 0 :(得分:2)

我认为摆脱计时器并订阅Windows.Devices.Power.Battery类的报告更新事件会更有效。

的影响
Battery.ReportUpdated += BatteryChargeLevelChanged;

public void BatteryChargeLevelChanged(object sender, EventArgs e)
{
    // show your message if the charge is low
}