Вызов PowerStatus.BatteryChargeStatus.ToString() иногда возвращает 0
Итак, мой метод заключается в следующем:
PowerStatus powerStatus = SystemInformation.PowerStatus;
if (powerStatus.BatteryChargeStatus != BatteryChargeStatus.NoSystemBattery)
{
var batteryStatus = powerStatus.BatteryChargeStatus.ToString()
}
Из моих тестовых систем я получаю широкий спектр результатов, таких как:
Высоко,
Низкий,
Зарядка,
Высокая зарядка
Низкий зарядка
Низкий, Критический
и вот странный... 0?
Я полагаю, что это как-то связано с BatteryChargeStatus Enum
1 ответ
Решение
Они пропустили один. Из документов базовой декларации операционной системы SYSTEM_POWER_STATUS:
Значение равно нулю, если батарея не заряжается, а емкость батареи находится между низким и высоким
Так что просто придумайте, как:
var status = SystemInformation.PowerStatus.BatteryChargeStatus;
if (status != BatteryChargeStatus.NoSystemBattery) {
var batteryStatus = status == 0 ? "Not charging" : status.ToString();
// etc...
}