我正在开发一个应用程序,我从Active Directory获取有关用户的信息。我浏览每个用户并获取其信息。我在AD中有很多用户,当我首先运行应用程序时它工作正常,但是当涉及到用户2000时,应用程序停止并给我错误:句柄无效。 (HRESULT异常:0x80070006(E_HANDLE))
我真的不知道这意味着什么,因为完全相同的应用程序在另一台计算机上运行得很好,它通过AD中的每个用户并获取他们的信息。
我该怎么办?
编辑:我使用BackgroundWorker从AD获取有关用户的信息。
private void BGWorker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
//Here I call the method to get user information from the AD.
GetUserFromADMethod("Server", "AD");
}
finally
{
//Calling Dispose() here dose not work.
BGWorker.Dispose();
}
}
答案 0 :(得分:2)
这是一个低级别的Windows错误,ERROR_INVALID_HANDLE,错误6.当您枚举大量数据时获取无效的句柄值表明您的应用程序未应该调用Dispose()。一种可能的诊断是TaskMgr.exe,Processes选项卡。查看+选择列并勾选“手柄”。在程序运行时观察程序的显示值。大型kaboom在大多数机器上达到10,000时就会发生。
检查代码是否正确使用使用语句,或者在您使用的类实现它时显式调用Dispose()或Close()。