C#, Constantly monitor battery level
batterylevel, c#, monitoring
Solution
Try Timer:
public class Monitoring
{
System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
public Monitoring()
{
timer1.Interval = 1000; //Period of Tick
timer1.Tick += timer1_Tick;
}
private void timer1_Tick(object sender, EventArgs e)
{
CheckBatteryStatus();
}
private void CheckBatteryStatus()
{
PowerStatus pw = SystemInformation.PowerStatus;
if (pw.BatteryLifeRemaining >= 75)
{
//Do stuff here
}
}
}
UPDATE:
There is another way to do your task complete. You can use `SystemEvents.PowerModeChanged`. Call it and wait for changes, monitor the changes occured then do your stuff.
static void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
{
if (e.Mode == Microsoft.Win32.PowerModes.StatusChange)
{
if (pw.BatteryLifeRemaining >= 75)
{
//Do stuff here
}
}
}
Problem
I am designing a program that depends on monitoring the battery level of the computer. This is the C# code I am using: ``` PowerStatus pw = SystemInformation.PowerStatus; if (pw.BatteryLifeRemaining >= 75) { //Do stuff here } ``` My failed attempt of the `while` statement, it uses all the CPU which is undesirable. ``` int i = 1; while (i == 1) { if (pw.BatteryLifeRemaining >= 75) { //Do stuff here } } ``` How do I monitor this constantly with an infinite loop so that when it reaches 75% it will execute some code.