Visual Studio中Performance Counter完全失效及报错问题求助
我之前在使用Visual Studio的Performance Counter控件时也碰到过一模一样的问题,折腾了好一阵才解决,给你分享几个亲测有效的方案:
检查Performance Counter相关服务状态
按下Win + R输入services.msc打开服务管理器,找到 Performance Counter DLL Host 和 Performance Logs & Alerts 这两个服务,确保它们处于正在运行状态。如果没启动,右键选择「启动」,并且把启动类型设为「自动」,避免下次重启又出问题。重建系统性能计数器注册表项
系统性能计数器的注册表项损坏是这类问题的常见原因。以管理员身份打开命令提示符(CMD),执行以下命令:lodctr /R这个命令会重建性能计数器的注册表设置和文本说明,执行完成后重启电脑,再打开VS试试。
以管理员权限运行Visual Studio
普通权限下,VS可能没有足够权限读取系统性能计数器的信息,导致下拉框为空或者找不到Memory项。右键Visual Studio图标,选择「以管理员身份运行」,再尝试使用控件。排查系统性能计数器本身是否正常
先打开Windows自带的性能监视器(直接在搜索栏搜就能找到),看看里面能不能正常看到Memory相关的计数器:- 如果性能监视器里也看不到,那肯定是系统层面的问题,优先执行上面的重建注册表命令;
- 如果性能监视器正常,那问题可能出在VS这边:
- 清理VS缓存:打开
工具 > 选项 > 环境 > 常规,点击「重置窗口布局」,或者手动删除%LOCALAPPDATA%\Microsoft\VisualStudio\[你的VS版本号]\ComponentModelCache目录下的文件,然后重启VS; - 修复VS:打开Visual Studio Installer,找到对应的VS版本,点击「修改」,选择「修复」选项,修复完成后重启。
- 清理VS缓存:打开
绕开设计器,用代码手动创建计数器
如果上面的方法都没用,可以尝试直接在代码里初始化PerformanceCounter,跳过设计器的问题:PerformanceCounter memoryCounter = new PerformanceCounter("Memory", "Available MBytes", true);这样能直接验证计数器是否可用,同时也能完成功能开发。
额外提醒:如果你用的是64位系统,注意项目的编译平台设置,x86和x64的兼容性问题也可能导致计数器读取失败,试试把目标平台改成Any CPU或者和系统一致的平台。
内容的提问来源于stack exchange,提问作者陳柏睿

