2
WMIを使用して特定の条件に一致するコンピュータのWindowsドメインを検索するコードがあります。WMIを使用してクエリを実行するときのComExceptionsの防止
私はCOMExceptionを取得します。私が照会しようとしているコンピュータと通信できない場合。大規模なドメインでテストすると、何千もの例外がスローされることになり、パフォーマンスが非常に高くなります。
有効な接続を確認してから、これらのエラーが発生しないようにする方法はありますか?
簡体例:
foreach(var computer in domain) {
var scope = new ManagementScope(computerPath, options), query);
try {
using (var searcher = new ManagementObjectSearcher(scope)) {
if (searcher.Get().Count == 0) {
// do stuff
}
}
} catch(ComException e) {
// Log and continue
}
}
これは本当の理由ではありません。ネットワークのタイムアウトは、例外を処理するよりも*ロット*長くなります。タイムアウトを回避することはできません。 –
私は時間を心配していません。私は、比較的短い時間で何千もの例外をスローするというCPUサイクルとメモリオーバーヘッドが心配です。私の「本当の」コードは非同期で実行され、テストの1つで1分間に約150の例外がスローされます。 –