我有一些代碼,一直工作正常了很長時間讓別人記錄在我的應用程序:的DirectorySearcher的FindAll SearchResultCollection計數拋出收到COMException
private Employee Authenticate(string userName, string password) {
DirectorySearcher search = new DirectorySearcher(_rootDirectory);
search.Filter = "(&(objectClass=user)(SAMAccountName=" + userName + "))";
try {
SearchResultCollection results = search.FindAll();
if (0 < results.Count) {
// the rest of my code
// that returns an employee
// if the password matches
}
} catch (Exception err) {
MessageBox.Show(err.Message, "ActiveDir.cs ADWrapper::AuthenticateUser Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return null;
}
最近,代碼已經拋出COMException作爲儘快測試results.Count
值(SearchResultCollection不爲空)。
微軟文檔沒有指出Count應該拋出任何類型的異常。
在調試我的代碼時,我可以將斷點放在上面的條件上,將鼠標懸停在上面,並查看是否存在異常。
如果我使用F10讓調試帶我去catch
條件或等待幾秒鐘斷點時,results.Count
變量變成有效且包含一個整數值。
我猜FindAll方法正在一個線程中執行,並且我正在線程完成之前檢查結果。
有沒有辦法告訴當FindAll()
已完成或已我只是發現了某種新的bug聲息作爲的Active Directory更新的結果?
什麼是HRESULT? http://msdn.microsoft.com/en-us/library/system.exception.hresult.aspx – 2012-04-27 22:13:01