一位同事告訴我,如果我的WMI系統信息收集查詢是隻向前和/或只讀的,他們會更快。這就說得通了。但我該怎麼做?如何在C#中只進行只讀WMI查詢?
4
A
回答
5
您需要使用EnumerationOptions類並將其Rewindable屬性設置爲false。這裏有一個例子:
using System;
using System.Management;
namespace WmiTest
{
class Program
{
static void Main()
{
EnumerationOptions options = new EnumerationOptions();
options.Rewindable = false;
options.ReturnImmediately = true;
string query = "Select * From Win32_Process";
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(@"root\cimv2", query, options);
ManagementObjectCollection processes = searcher.Get();
foreach (ManagementObject process in processes)
{
Console.WriteLine(process["Name"]);
}
// Uncomment any of these
// and you will get an exception:
//Console.WriteLine(processes.Count);
/*
foreach (ManagementObject process in processes)
{
Console.WriteLine(process["Name"]);
}
*/
}
}
}
,你不會看到任何的性能提升,除非你用它來枚舉一類具有大量實例(如Cim_DataFile),你會得到枚舉返回ManagementObjectCollection只有一次。您也將無法使用ManagementObjectCollection.Count等 至於只讀查詢,我不知道如何製作這些。
1
你的同事必須使用半同步法只進普查員一起調用意味着。在半同步模式下,WMI方法調用立即返回,對象在後臺檢索並在創建後按需返回。此外,當使用半同步模式檢索大量實例時,建議您只獲得只向前計數器以提高性能。這些特性在MSDN article中解釋。
由於烏羅什已經指出,要得到半同步模式只進枚舉,您需要與ReturnImmediately
屬性設置爲true
和Rewindable
屬性設置爲false
,例如使用EnumerationOptions
類的實例:
EnumerationOptions opt = new EnumerationOptions();
opt.ReturnImmediately = true;
opt.Rewindable = false;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query, opt);
相關問題
- 1. 如何在c中運行wmi查詢
- 2. LINQ查詢只讀
- 3. 在C++中實現C#「只讀」行爲
- 4. 只讀在C#
- 5. 如何在c#MVC中使ListBoxFor只讀?
- 6. 如何在QPlainTextEdit中只讀行?
- 7. 如何在Postgres(或MySql)中創建和查詢只讀快照?
- 8. C#SqlDataReader只讀取1行
- 9. 如何在tinyMCE 4.x中進行只讀操作?
- 10. 在WMI查詢
- 11. 在Mysql中只執行一個查詢
- 12. 檢查只讀查詢字符串
- 13. 如何運行以下WMI查詢?
- 14. 使用ServiceStack.Redis,如何在事務中運行強類型只讀查詢
- 15. 只在Django查詢中進行全字匹配
- 16. 如何構建WMI查詢
- 17. 如何在excel中使用apche只讀只讀專欄POI
- 18. 如何包括只讀在OData的查詢屬性
- 19. 只讀c中的一行txt
- 20. 只讀在C#VS在VB.NET
- 21. 如何在Django中只執行一次查詢?
- 22. 如何在查詢中只乘以一行?
- 23. 如何查詢只在laravel whereBetween()
- 24. 如何通過只在查詢
- 25. 如何只包括在SQL查詢
- 26. 查詢只從
- 27. 確保SQL查詢是隻讀的
- 28. 使SQL選擇查詢只讀
- 29. Mongoose查詢結果是否只讀?
- 30. 休眠只讀查詢緩存機制