トップ回答者
C# Win32_NetworkConnectionよりLocalName、RemoteName、UserNameを取得 高速化

質問
-
visual studio2010のC#でWin32_NetworkConnectionよりLocalName、RemoteName、UserNameを取得したいと思っています。
下記のコードで取得は可能なのですが、処理速度が遅いのです。ManagementObject mo in mocが重いようなのですが
高速化する方法はありませんでしょうか。
searcher.Query = new ObjectQuery("SELECT * FROM Win32_NetworkConnection");
using (ManagementObjectCollection moc = searcher.Get())
{
foreach (ManagementObject mo in moc)
{
try
{
LocalName = (mo["LocalName"] ?? string.Empty).ToString();
provider = (mo["RemoteName"] ?? string.Empty).ToString();
UserName = (mo["UserName"] ?? string.Empty).ToString();
}
finally
{
mo.Dispose();
}
}
回答
すべての返信
-
visual studio2010 C#で下記コードを含んだEXEを実行すると、windows7では軽快に動作するのですが
windowsXPだと、動作が極端に鈍くなます。
XP環境はProffesional Sarvice Pack3 メモリ1G Core duo です。
Win7は proffesional sarvice pack1 メモリ4G Core i5です。
両方とも.NETFRAMEWORK4 clientProfileが入っています。
xpでの動作を早めるには、下記のメソッドの使用はしないほうが良いのでしょうか。
ManagementClass mgc = new ManagementClass("Win32_NetworkConnection");
ManagementObjectCollection moc = mgc.GetInstances();
foreach (ManagementObject mo in moc)- 結合 星 睦美 2013年7月18日 5:57 ManagementObjectCollection 関連
-
A_M_Scofield さん
ManagementObjectCollection を使ったプログラムの処理が遅い問題に関するスレッドをひとつにまとめさせていただきました。
先の質問でのコードからは変更されていますが、検証の結果、XP環境では処理が遅くなるという手がかりがあったようですね。
実行されているPCのスペックに違いがあるので、この検証だけでXP 環境だから処理が遅いと判断はできませんが、もし実行環境を限定した場合には(Windows XP3、メモリ1G、Core duo) その処理を変更すると処理速度に変化があるのでは?
---
今回は私から佐祐理 さんの返信に[回答としてマーク]させていただきました。
プログラムに繰り返し処理が含まれていると繰り返す件数に応じて処理に時間がかかります。また、同じプログラムを実行した場合でも、質問にあるハードウェアの比較でみるとWindows XP SP3 では遅くなるのではないかと思います。
日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
- 編集済み 星 睦美 2013年7月26日 5:59 回答としてマーク