私は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
あなたの同僚は、semisynchronousメソッド呼び出しを順方向専用の列挙子とともに使用することを意味する必要があります。半同期モードでは、WMIメソッド呼び出しがすぐに戻り、オブジェクトがバックグラウンドで取得され、オブジェクトが作成されるとオンデマンドで返されます。また、半同期モードを使用して多数のインスタンスを取得する場合は、パフォーマンスを向上させるために前方専用列挙子を取得することをお勧めします。これらの特質は、MSDN articleに説明されています。
ウロスは半同期モードでは、前方のみの列挙子を取得するには、指摘したように、あなたはtrue
にReturnImmediately
プロパティセットとfalse
に設定Rewindable
プロパティでEnumerationOptions
クラスのインスタンスを使用する必要があり、例えば:
EnumerationOptions opt = new EnumerationOptions();
opt.ReturnImmediately = true;
opt.Rewindable = false;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query, opt);
関連する問題
- 1. itext7で読み取り専用pdfを作成する方法
- 2. 読み取り専用自動対(読み取り専用)プロパティ
- 3. PythonでElasticSearch用の読み取り専用クライアントを作成する方法は?
- 4. クエリの読み取り専用句
- 5. は読み取り専用
- 6. C#でプロパティアクセサ「読み取り専用」
- 7. "読み取り専用"ファイルの作成方法?
- 8. jQuery読み取り専用スライダー - 方法?
- 9. powershellで読み取り専用メンバーを作成するには?
- 10. 読み取り専用リストのC#
- 11. C#WPFの読み取り専用チェックボックス
- 12. 読み取り専用C#6.0
- 13. C++ ifstream読み取り専用ワード数
- 14. C#DevExpressスケジューラ読み取り専用
- 15. asp.net、c#.net読み取り専用フィールド
- 16. CurrentCulture.DateTimeFormat.LongTimePattern読み取り専用
- 17. 読み取り専用プロパティ
- 18. 読み取り専用プロパティ
- 19. 読み取り専用テキストボックス
- 20. 読み取り専用
- 21. 読み取り専用アソシエーション
- 22. 読み取り専用TFS
- 23. Entity Frameworkで読み取り専用エンティティを作成する方法は?
- 24. Sql Serverで読み取り専用ビューを作成する
- 25. phpMyAdminで読み取り専用ユーザーを作成する
- 26. .Bottomは読み取り専用です
- 27. inputTextareaを読み取り専用で検証する方法は?
- 28. Mockで読み取り専用プロパティをモックする方法は?
- 29. WindowsでJavaから非読み取り専用ディレクトリを作成する方法
- 30. 読み取り専用でないフォルダを作成する方法