2012-11-08 4 views
8

Active Directory에서 긴 검색을 수행 중이며 DirectorySearcher.Asynchronous = True를 사용자에게 제공하고 싶습니다. Microsoft는 동시에 추가 결과를 검색하는 동안 그들이 발견으로 비동기 검색 결과를 표시 할 수 있습니다 MSDN비동기 DirectorySearcher (LDAP)

에 거의 설명서를 제공합니다. 이는 목록 상자 채우기와 같은 작업에 유용합니다.

이 속성의 기본 설정은 false입니다.

검색이 언제 완료되는지 어떻게 알 수 있습니까? 이 알림을 제공 할 속성, 이벤트 또는 콜백이 표시되지 않습니다. 누구나이 아이디어를 어떻게 구할 수 있습니까?

기본적으로 나는이 찾고 있어요 :

  • 시작 비동기 디렉토리 검색을
  • 반환 결과 (객체)를 System.Collections.Concurrent.ConcurrentQueue에 DirectorySearcher으로
  • 내가 항목을 처리 할 수있는 실행 대기열에 추가됨

도움을 주셔서 대단히 감사합니다.

+0

나는 건가 이 기능을 사용하려면 System.DirectoryServices.Protocols를 사용하여 내 자신의 클래스를 만들어야합니까? –

답변

1

DirectoryServices는 ADSI를 사용하여 AD와 통신합니다. 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 아래에 뭔가 페이지 크기를 설정하고 결과에 와서 당신의 대기열을 채 웁니다.