【发布时间】:2020-04-04 16:15:18
【问题描述】:
我正在尝试在 c# 中扩展给定的代码,但由于缺乏编程经验,我有点卡住了。
使用 Visual Studio 社区,我试图通过控制台读出 CPU 核心温度。该代码使用开关/外壳来查找传感器的特定名称的外壳,即CPU Core #1并给出温度。对于每个 CPU 核心。拥有 64 个内核,这相当于复制粘贴。我试图实现一个 foreach-situation 但它不起作用。另外我不知道如何在这里设置for循环。
这是有问题的代码:
if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Temperature)
{
if (s.Value != null)
{
float curTemp = (float)s.Value;
switch (s.Name)
{
case "Core Average": //average temps
cpuTemp = curTemp.ToString();
Console.WriteLine(" ... ");
Console.WriteLine(" CPU AVG TEMP: " + cpuTemp);
Console.WriteLine(" ... ");
break;
case "CPU Core #": //Temps for CPU Core #1, CPU Core #2 ...
foreach (s.Name in LibreHardwareMonitor...? ) // <-- no clue what to do here
{
int i = 1;
cpuTemp = curTemp.ToString();
Console.WriteLine(" ... ");
Console.WriteLine(" CPU #" + i +" TEMP: " + cpuTemp);
Console.WriteLine(" ... ");
i++;
}
break;
}
}
}
我被卡住了,不知道如何实现以吐出所有 CPU Core#1 到 CPU Core#64 温度。
完整代码如下:
private void dataCheck(object StateObj)
{
string cpuTempA = "";
string cpuTemp = "";
string gpuTemp = "";
string gpuLoad = "";
string cpuLoad = "";
string dataUsed = "";
string fanUsed = "";
string cpuClock = "";
//;
StateObjClass State = (StateObjClass)StateObj;
// enumerating all the hardware
foreach (LibreHardwareMonitor.Hardware.IHardware hw in thisComputer.Hardware)
{
Console.WriteLine("HARDWARE: " + hw.HardwareType);
Console.ReadLine();
hw.Update();
// searching for all sensors and adding data to listbox
foreach (LibreHardwareMonitor.Hardware.ISensor s in hw.Sensors)
{
Console.WriteLine("NAME: " + s.Name + ", TYPE: " + s.SensorType + ", VALUE: " + s.Value);
Console.ReadLine();
if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Temperature)
{
Console.WriteLine(" FOUND " + s.SensorType);
if (s.Value != null)
{
Console.WriteLine(" FOUND VALUE " + s.Value);
float curTemp = (float)s.Value;
switch (s.Name)
{
case "Core Average":
Console.WriteLine(" FOUND NAME " + s.Name);
cpuTempA = curTemp.ToString();
Console.WriteLine(" ... ");
Console.WriteLine(" CPU AVG TEMP: " + cpuTempA);
Console.WriteLine(" ... ");
break;
case "CPU Core #": //CPU Core #1, CPU Core #2 ...
foreach (s.Name in LibreHardwareMonitor...? )
{
int i = 1;
cpuTemp = curTemp.ToString();
Console.WriteLine(" ... ");
Console.WriteLine(" CPU #" + i +" TEMP: " + cpuTemp);
Console.WriteLine(" ... ");
i++;
}
break;
}
}
}
if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Clock)
{
Console.WriteLine(" FOUND " + s.SensorType);
if (s.Value != null)
{
Console.WriteLine(" FOUND VALUE " + s.Value);
float curClock = (float)s.Value;
switch (s.Name)
{
case "CPU Core #4":
Console.WriteLine(" FOUND NAME " + s.Name);
cpuClock = curClock.ToString();
Console.WriteLine(" ... ");
Console.WriteLine(" CPU CLOCK: " + cpuClock);
Console.WriteLine(" ... ");
break;
}
}
}
}
}
}
}
【问题讨论】:
-
您能否详细说明“不起作用”?您是否收到编译错误(请说明),是否发生了您没有预料到的事情(您期望什么以及发生了什么)?
-
它不会运行/编译哈哈 - 我是菜鸟
标签: c# loops for-loop foreach switch-statement