9

Active Directoryで長い検索を実行していますが、DirectorySearcher.Asynchronous=Trueを使用したいと考えています。Microsoftは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 に答える