无法使OpenHardwareMonitorLib.dll正常工作

时间:2012-07-20 17:01:10

标签: c# dll hardware-interface openhardwaremonitor

我发现很少有关于如何让OHM在c#

中工作的例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenHardwareMonitor.Hardware;

namespace OpenHardwareMonitorReport
{

    class Program
    {

        static void Main(string[] args)
        {
            Computer computer = new Computer();
            computer.Open();

            var temps = new List<decimal>();
            foreach (var hardware in computer.Hardware)
            {
                if (hardware.HardwareType != HardwareType.CPU)
                    continue;
                hardware.Update();
                foreach (var sensor in hardware.Sensors)
                {
                    if (sensor.SensorType != SensorType.Temperature)
                    {
                        if (sensor.Value != null)
                            temps.Add((decimal)sensor.Value);
                    }
                }
            }

            foreach (decimal temp in temps)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();
        }
    }
}

这应该显示一些传感器数据,但是当我运行它时会给我这个错误:

托管调试助手'PInvokeStackImbalance'在'C:\ Users \ Josh \ Desktop \ DLLTutorial \ HardwareMonitor \ HardwareMonitor \ bin \ Debug \ HardwareMonitor.vshost.exe'中检测到问题。 附加信息:调用PInvoke函数'PInvokeDelegateFactoryInternalAssembly!PInvokeDelegateFactoryInternalWrapperType13 :: ADL_Main_Control_Create'使堆栈失去平衡。这很可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

我从OHM svn下载了.dll,把它放在我的项目中,添加了对它的引用,它在“computer.Open();”行崩溃了我在上面发布了这个错误。

请帮忙!

1 个答案:

答案 0 :(得分:1)

显然我的设置存在问题。它在其他系统上没有失败......当你发生这种情况时,你是不是讨厌它。