2012-11-08 5 views
8

私はアクティブなディレクトリで長い検索を実行していて、実際にDirectorySearcher.Asynchronous = Trueを使用したいと考えています。 Microsoftは が同時に追加の結果を検索しながら、彼らが見つかったとして、非同期の検索結果を表示することができMSDN非同期DirectorySearcher(LDAP)

にはほとんどのドキュメントを提供します。これは、リストボックスを設定するなどの作業の場合に便利です( )。

このプロパティのデフォルト設定はfalseです。

検索がいつ行われるのかをアプリケーションがどのように知るのですか?この通知を提供するプロパティ、イベント、またはコールバックは表示されません。誰もがどのようにこの機能を得るためのアイデアを持っていますか?

は基本的に私はこれを探しています:たDirectorySearcher私はアイテムを処理することができます実行されているとおり

  • スタート非同期ディレクトリ検索
  • 戻る(オブジェクトの)System.Collections.Concurrent.ConcurrentQueue
  • への結果キューに追加

ありがとうございます。

+0

私が行くアムこの機能を使用するには、System.DirectoryServices.Protocolsを使用して自分のクラスを作成する必要がありますか? –

答えて

1

ディレクトリサービスはADと通信するためにADSIを使用します。 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年の下に何かにページサイズを設定し、結果がでてくるよう、あなたのキューを取り込む。