异步DirectorySearcher(LDAP)

时间:2012-11-08 22:21:01

标签: .net vb.net directoryservices

我正在Active Directory中执行长搜索,并且非常希望使用DirectorySearcher.Asynchronous = True。 Microsoft在MSDN

上提供的文档非常少
  

异步搜索可以显示结果   同时搜索其他结果。这很有用   填充列表框等任务。

     

此属性的默认设置为false。

我的应用程序在搜索完成时如何知道。我没有看到任何提供此通知的属性,事件或回调。有没有人有任何想法如何获得这个功能?

基本上我在找这个:

  • 启动异步目录搜索
  • 将结果返回给System.Collections.Concurrent.ConcurrentQueue(Of Object)
  • 当DirectorySearcher正在运行时,我可以处理添加到队列中的项目

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

DirectoryServices使用ADSI与AD通信。将async设置为true时,它会使用IDirectorySearch.SetSearchPreferences将ADS_SEARCHPREF_ASYNCHRONOUS搜索首选项设置为true。

这是一个解释同步和异步搜索之间差异的页面。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa746498(v=vs.85).aspx

这描述了分页。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa746414(v=vs.85).aspx

如果您正在进行大型查询,您可以生成自己的线程或使用线程池,将页面大小设置为低于1000的值,并在结果进入时填充队列。