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週期和內存開銷。我的「真實」代碼異步運行,並在我的一個測試中每分鐘拋出大約150次例外。 –