【发布时间】:2009-06-25 19:31:10
【问题描述】:
我继承了进行大量远程 WMI 调用的代码。当我反复暂停执行并查看调用堆栈时,它几乎总是在ManagementScope.Connect() 调用中。每个 WQL 查询似乎都建立了一个新连接。
尽管进行了有限的试验和错误,但在提高 WMI 调用的性能方面我还没有发现任何重大成果。
我尝试过缓存以前的结果、重用连接并避免可怕的“select *”。这些并没有给我想要的性能改进。我有兴趣了解环境对 WMI 性能的影响,但代码需要在可能超出我控制范围的各种环境中运行。
如果有的话,.NET 中面向性能的 WMI 访问的注意事项是什么?
【问题讨论】:
-
您是在对同一台机器还是对多台机器进行多次调用?如果是后者,你考虑过多线程吗?
-
现在是同一台机器;该代码用于自动远程安装。代码首先确定已经安装了哪些依赖项,查询操作系统(确定处理器架构、系统目录、程序文件目录、操作系统版本等);它这样做是为了配置安装,然后使用 WMI 启动和监视安装。有一个功能请求,以使它们能够排队并并行运行(例如一次 5 个)。好建议。
-
啊哈。我在 vbscript 中做了一些非常相似的事情。我的既讨厌又痛苦。祝你好运。
标签: .net wmi performance wql