【发布时间】:2013-07-24 11:40:50
【问题描述】:
我正在设计一个依赖于监控计算机电池电量的程序。
这是我正在使用的 C# 代码:
PowerStatus pw = SystemInformation.PowerStatus;
if (pw.BatteryLifeRemaining >= 75)
{
//Do stuff here
}
我对@987654323@ 语句的尝试失败,它使用了所有不需要的CPU。
int i = 1;
while (i == 1)
{
if (pw.BatteryLifeRemaining >= 75)
{
//Do stuff here
}
}
我如何通过无限循环持续监控它,以便当它达到 75% 时它会执行一些代码。
【问题讨论】:
-
首先:使用
while(true)而不是你的while,其次Do stuff here的东西会破坏你的代码,while(true) 不会(当然,如果你在某处有break):) -
将监视器移动到不同的线程。预见 a callback to the gui 更新您的 GUI
-
While(true) 不会创建一些无法访问的代码(就像我一样)。 @wud
-
简而言之,线程就像一个进程。当您在默认线程(GUI 线程)中使用
while (true)时,GUI 将变得无响应。为了防止这种情况发生,您需要创建另一个线程(线程、后台工作者、计时器)来处理 while 循环。唯一的问题是只有 GUI 线程能够更新 GUI。这就是为什么你需要调用正确的 GUI 线程并让它更新它的 GUI... -
如果你做一个紧密的循环,除了每秒检查一千次电池电量之外什么都不做,那么你很快就会收敛到零电池电量。
标签: c# monitoring batterylevel