9

我正在活动目录中进行长时间搜索,并且真的很想使用 DirectorySearcher.Asynchronous = True。微软在MSDN上提供的文档很少

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

此属性的默认设置为 false。

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

基本上我正在寻找这个:

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

非常感谢你的帮助。

4

1 回答 1

1

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

这是一个解释同步和异步搜索之间区别的页面:使用 IDirectorySearch 进行同步和异步搜索

这描述了分页:使用 IDirectorySearch 进行分页

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

于 2012-11-22T02:27:38.103 回答