none
C# Win32_NetworkConnectionよりLocalName、RemoteName、UserNameを取得 高速化 RRS feed

  • 質問

  • 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();
                                     }
                                 }

    2013年7月11日 9:01

回答

  • この処理を高速化することはできません。(私が知らないだけかもしれません。)

    ただ気になるのは、この処理がクリティカルパスなのでしょうか? 別の処理と並列に実行すればトータルでの処理時間は短縮できませんか? (速くないけど早くなります。)

    • 回答の候補に設定 星 睦美 2013年7月18日 2:50
    • 回答としてマーク 星 睦美 2013年7月26日 5:50
    2013年7月11日 10:49

すべての返信

  • この処理を高速化することはできません。(私が知らないだけかもしれません。)

    ただ気になるのは、この処理がクリティカルパスなのでしょうか? 別の処理と並列に実行すればトータルでの処理時間は短縮できませんか? (速くないけど早くなります。)

    • 回答の候補に設定 星 睦美 2013年7月18日 2:50
    • 回答としてマーク 星 睦美 2013年7月26日 5:50
    2013年7月11日 10:49
  •  

     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 関連
    2013年7月18日 5:13
  • A_M_Scofield さん

    ManagementObjectCollection を使ったプログラムの処理が遅い問題に関するスレッドをひとつにまとめさせていただきました。

    先の質問でのコードからは変更されていますが、検証の結果、XP環境では処理が遅くなるという手がかりがあったようですね。

    実行されているPCのスペックに違いがあるので、この検証だけでXP 環境だから処理が遅いと判断はできませんが、もし実行環境を限定した場合には(Windows XP3、メモリ1G、Core duo) その処理を変更すると処理速度に変化があるのでは?

    ---

    今回は私から佐祐理 さんの返信に[回答としてマーク]させていただきました。

    プログラムに繰り返し処理が含まれていると繰り返す件数に応じて処理に時間がかかります。また、同じプログラムを実行した場合でも、質問にあるハードウェアの比較でみるとWindows XP SP3 では遅くなるのではないかと思います。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美


    • 編集済み 星 睦美 2013年7月26日 5:59 回答としてマーク
    2013年7月18日 6:17