【问题标题】:Asynchronous DirectorySearcher (LDAP)异步目录搜索器 (LDAP)
【发布时间】:2020-01-17 18:07:33
【问题描述】:

我正在 Active Directory 中执行长时间搜索,并且非常希望使用 DirectorySearcher.Asynchronous = True。 Microsoft 在MSDN 上提供的文档很少

异步搜索可以在找到结果时显示结果 同时搜索其他结果。这对 填充列表框等任务。

此属性的默认设置为 false。

我的应用程序如何知道搜索何时完成。我没有看到任何可以提供此通知的属性、事件或回调。有谁知道如何获得此功能?

基本上我正在寻找这个:

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

非常感谢您的帮助。

【问题讨论】:

  • 我是否需要使用 System.DirectoryServices.Protocols 创建自己的类才能获得此功能?

标签: .net vb.net directoryservices


【解决方案1】:

DirectoryServices 使用 ADSI 与 AD 对话。当您将 async 设置为 true 时,它​​会使用 IDirectorySearch.SetSearchPreferences 将 ADS_SEARCHPREF_ASYNCHRONOUS 搜索首选项设置为 true。

这里有一个页面解释了同步和异步搜索之间的区别:Synchronous and Asynchronous Searches with IDirectorySearch

这描述了分页:Paging with IDirectorySearch

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

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多