2012-11-08 13 views
8

Sto preformando una ricerca lunga nella directory attiva e desidero veramente l'utente DirectorySearcher.Asynchronous = True. Microsoft fornisce pochissima documentazione su MSDNAsynchronous DirectorySearcher (LDAP)

Una ricerca asincrona può mostrare i risultati come si trovano, mentre contemporaneamente la ricerca di ulteriori risultati. Ciò è utile per le attività come la compilazione di caselle di riepilogo.

L'impostazione predefinita per questa proprietà è false.

Come è la mia applicazione sapere quando la ricerca è terminata. Non vedo alcuna proprietà, eventi o callback che forniscano questa notifica. Qualcuno ha qualche idea su come ottenere questa funzionalità?

Fondamentalmente Cerco questo:

  • Inizia Async Ricerca directory
  • risultati ritorno ad uno System.Collections.Concurrent.ConcurrentQueue (dell'oggetto)
  • Come DirectorySearcher è in esecuzione posso elaborare Articoli aggiunto alla coda

Grazie mille per il vostro aiuto.

+0

sto andando è necessario creare la mia classe utilizzando System.DirectoryServices.Protocols per ottenere questa funzionalità? –

risposta

1

DirectoryServices utilizza ADSI per comunicare con AD. Quando si imposta async su true, imposta la preferenza di ricerca ADS_SEARCHPREF_ASYNCHRONOUS su true utilizzando IDirectorySearch.SetSearchPreferences.

Ecco una pagina che spiega le differenze tra le ricerche di sincronizzazione e asincrone. http://msdn.microsoft.com/en-us/library/windows/desktop/aa746498(v=vs.85).aspx

Descrive il paging. http://msdn.microsoft.com/en-us/library/windows/desktop/aa746414(v=vs.85).aspx

Se stai facendo una grande domanda si potrebbe generare il proprio filo o utilizzare il pool di thread, impostare le dimensioni della pagina a qualcosa di inferiore a 1000, e popolano la coda come i risultati sono disponibili in.