0

我正在使用以下代码在达到充电水平时显示一个消息框

private void timer1_Tick(object sender, EventArgs e)
    {
        battery = Convert.ToInt32(power.BatteryLifePercent * 100);

        while (battery == 100)
        {
            MessageBox.Show("charging full disconnect the charger");
        }
    }

此代码正在运行。但它不止一次显示消息框。我只想展示一次。

谢谢

4

2 回答 2

0

与您的 while 循环相关的条件永远不会以它的编码方式达到。这就是为什么循环体将继续执行的原因。

您需要嵌入更改或刷新条件的代码。但是,如果您这样做,该程序将消耗大量资源,因为电池充电过程通常很耗时。然后您需要做的是可能会在一段时间内执行 thread.sleep 或更好地使用计时器。

此代码示例正在执行类似的操作,在您的情况下可能值得回顾: BlackWasp-PowerStatusCheck

于 2014-01-01T09:37:18.100 回答
0

没有更多信息,很难确定实际问题。但是,您可能可以通过使用变量来跟踪您是否已显示消息来快速解决问题。

PowerStatus power = SystemInformation.PowerStatus;

int battery = 0;
bool battery_message_shown = false;

if( battery == 100 && battery_message_shown == false )
{
  battery_message_shown = true;
  MessageBox.Show("charging full");
}

尽管理想情况下,除非是显示消息的时间,否则根本不会调用此代码。不过,我需要看到更大的画面才能弄清楚。

于 2014-01-01T08:57:07.037 回答