【发布时间】:2015-07-23 14:50:39
【问题描述】:
我需要通过超时读取一些关于 MS Queue 的信息(BytesinQueue、MessagesinQueue),但是这些数据不会刷新。
var path = string.Format(@"\\{0}\root\cimv2", machine);
var scope = new ManagementScope(path);
scope.Connect();
string queryString = String.Format(@"SELECT * FROM Win32_PerfRawData_MSMQ_MSMQQueue WHERE Name like '%{0}%'", queuePath.Remove(0, queuePath.LastIndexOf('\\') + 1));
var query = new ObjectQuery(queryString);
var searcher = new ManagementObjectSearcher(scope, query);
var moItems = from ManagementObject x in searcher.Get() select x;
var moItem = moItems.FirstOrDefault();
if (moItem != null)
{
BytesinQueue = (UInt64)moItem.GetPropertyValue("BytesinQueue");
MessagesInQueue = (UInt64)moItem.GetPropertyValue("MessagesinQueue");
}
如果我使用 Windows Management Instrumentation Tester,数据不会刷新,但有一个“刷新对象”按钮,可以满足我的需要。
我怎样才能始终获取实际数据或刷新它?
【问题讨论】:
-
您是否编写了 WMI Tester 程序?我猜当您单击 Refresh Object 按钮时,会调用您显示的代码。当您单步执行该代码时,您是否一直到底部?某处可能有异常。
-
不,它内置在 Windows 中。开始->运行->“wbemtest”