多くのリモートWMI呼び出しを行うコードを継承しました。繰り返し実行を中断してコールスタックを見ると、ほとんど常にManagementScope.Connect()
コールになります。各WQLクエリで新しい接続が作成されているようです。.NETでWMIのパフォーマンスを向上させるにはどうすればよいですか?
限定された試行錯誤にもかかわらず、私はまだWMI呼び出しのパフォーマンスを向上させるには大きな成果を見いだせませんでした。
以前の結果をキャッシュし、接続を再利用し、恐ろしい "select *
"を回避しようとしました。これらは、私が望む性能向上を私に与えていない。私はWMIのパフォーマンスに対する環境の影響を理解することに興味がありますが、コードはおそらく私のコントロールの範囲を超えたさまざまな環境で実行する必要があります。
もしあれば、.NETでのパフォーマンス指向のWMIアクセスのやり方は何ですか?
同じマシンまたは複数のマシンを複数コールしていますか?後者の場合は、マルチスレッドと考えていますか? – serialhobbyist
今のところそれは同じマシンです。コードは自動化されたリモートインストールのためのものです。コードはまず、依存関係が既にインストールされているかどうかを判断し、OSに問い合わせます(プロセッサアーキテクチャ、システムディレクトリ、プログラムファイルディレクトリ、OSバージョンなどを判断します)。これを実行してインストールを構成し、WMIを使用してインストールを起動して監視します。これらをキューに入れ、並列に実行できるようにする機能要求がありました(たとえば、一度に5つ)。良い提案。 – devgeezer
ああ〜私はvbscriptで非常に似たようなことをしてきました。私のものは厄介で痛いものでした。お大事に。 – serialhobbyist