当权限正常以及连接正常时,WMI出现莫名COM异常的处理

最近需要通过WMI监控远程服务器的CPU状况,于是使用了WMI轮询服务器的CPU情况,并显示在DevExpress的Gauges控件。

程序运行正常,但过了1个甚至几个小时,会莫名出现如下异常:

2009-10-30 12:14:54,409 [5572] WARN - System.Runtime.InteropServices.COMException (0x800706BF)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
   at System.Management.ManagementObjectCollection.get_Count()
   at MorningStar.Blade.ProcessMonitorUtil.Win32ServiceManager.GetObjects(String queryString, Boolean allowQueryCaching) in ****.Blade.ProcessMonitorUtil\Utils\Win32ServiceManager.cs:line 288

因服务器的CPU监控至少有一个小时以上是正常的,所以我们认为WMI在权限和配置是“正常”的,于是先采用如下方式进行处理(WMI的配置到处都是,此文就不贴那么多代码了):

 

GetObjects

经过调试,大致经过一个半小时后,出现异常,经过两次重试后,可再次获取数据。

不过这种做法是特殊处理,大概也就是特殊情况特殊对待吧

posted @ 2009-10-30 16:12  清风飘雨  阅读(666)  评论(0)    收藏  举报