Просмотр исходного кода

修复 SystemInfo.cs 中的空引用异常处理

在 `SystemInfo.cs` 文件中,更新了处理器信息获取逻辑,使用空值条件运算符 `?.` 以避免空引用异常。同时,修改了异常处理部分,返回包含默认值的 `CpuInfo` 对象数组,以提供更详细的错误信息。
懒得勤快 5 месяцев назад
Родитель
Сommit
6dc596b304
1 измененных файлов с 21 добавлено и 9 удалено
  1. 21 9
      Masuit.Tools.Abstractions/Hardware/SystemInfo.cs

+ 21 - 9
Masuit.Tools.Abstractions/Hardware/SystemInfo.cs

@@ -195,19 +195,31 @@ namespace Masuit.Tools.Hardware
                 return CpuObjects.Value.Select(mo => new CpuInfo
                 {
                     NumberOfLogicalProcessors = ProcessorCount,
-                    CurrentClockSpeed = mo["CurrentClockSpeed"].ToString(),
-                    Manufacturer = mo["Manufacturer"].ToString(),
-                    MaxClockSpeed = mo["MaxClockSpeed"].ToString(),
-                    Type = mo["Name"].ToString(),
-                    DataWidth = mo["DataWidth"].ToString(),
-                    SerialNumber = mo["ProcessorId"].ToString(),
-                    DeviceID = mo["DeviceID"].ToString(),
+                    CurrentClockSpeed = mo["CurrentClockSpeed"]?.ToString(),
+                    Manufacturer = mo["Manufacturer"]?.ToString(),
+                    MaxClockSpeed = mo["MaxClockSpeed"]?.ToString(),
+                    Type = mo["Name"]?.ToString(),
+                    DataWidth = mo["DataWidth"]?.ToString(),
+                    SerialNumber = mo["ProcessorId"]?.ToString(),
+                    DeviceID = mo["DeviceID"]?.ToString(),
                     NumberOfCores = mo["NumberOfCores"].ChangeTypeTo<int>()
                 }).ToList();
             }
-            catch (Exception)
+            catch (Exception e)
             {
-                return [];
+                return [new CpuInfo
+                    {
+                        DeviceID = null,
+                        Type = e.Message,
+                        Manufacturer = null,
+                        MaxClockSpeed = null,
+                        CurrentClockSpeed = null,
+                        NumberOfCores = 0,
+                        NumberOfLogicalProcessors = 0,
+                        DataWidth = null,
+                        SerialNumber = null
+                    }
+                ];
             }
         }