C#用OpenHardwareMonitor读显卡温度为什么都说可以用,但是一只是卡在computer.Open();这一直找不到系统文件,有什么办法能解决嘛,源码网上找的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WinFormsApp1.Homepagme;
using OpenHardwareMonitor.Hardware;
using System.Threading;
namespace WinFormsApp1
{
public partial class ceshi : Form
{
public class UpdateVisitor : IVisitor
{
public void VisitComputer(IComputer computer)
{
computer.Traverse(this);
}
public void VisitHardware(IHardware hardware)
{
hardware.Update();
foreach (IHardware subHardware in hardware.SubHardware)
subHardware.Accept(this);
}
public void VisitSensor(ISensor sensor) { }
public void VisitParameter(IParameter parameter) { }
}
public class GetCPUTemp
{
public static int GetTemp()
{
//注意,必须以管理员身份运行方可。hhd只有已用空间一项,mainboard没有传感器。cpu温度
UpdateVisitor updateVisitor = new UpdateVisitor();
Computer computer = new Computer();
computer.Open();
computer.CPUEnabled = true;
// computer.MainboardEnabled = true;
// computer.HDDEnabled = true;
computer.Accept(updateVisitor);
int temperature = 0;
for (int i = 0; i < computer.Hardware.Length; i++)
{
//查找硬件类型为CPU
if (computer.Hardware[i].HardwareType == HardwareType.CPU)
{
for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)
{
string str = computer.Hardware[i].Sensors.ToString();
int k = 0;
if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature && computer.Hardware[i].Sensors[j].Name == "CPU Core # 1")
{
temperature = Convert.ToInt32(computer.Hardware[i].Sensors[j].Value);
}
}
}
}
return temperature;
}
}
private List<Image> images = new List<Image>();
public ceshi()
{
InitializeComponent();
while (true)
{
label2.Text = GetCPUTemp.GetTemp().ToString();
Thread.Sleep(1000);
}
}
}
异常文本
System.MissingMethodException: Method not found: 'System.Threading.Mutex System.Threading.Mutex.OpenExisting(System.String, System.Security.AccessControl.MutexRights)'.
at OpenHardwareMonitor.Hardware.Ring0.Open()
at OpenHardwareMonitor.Hardware.Computer.Open()
at WinFormsApp1.ceshi.GetCPUTemp.GetTemp() in D:\桌面\vs\WinFormsApp1\WinFormsApp1\ceshi.cs:line 48
at WinFormsApp1.ceshi..ctor() in D:\桌面\vs\WinFormsApp1\WinFormsApp1\ceshi.cs:line 105
at WinFormsApp1.index.button4_Click(Object sender, EventArgs e) in D:\桌面\vs\WinFormsApp1\WinFormsApp1\index.cs:line 159
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)