2012-11-08 40 views
8

Tôi đang tạo sẵn một tìm kiếm dài trong thư mục hoạt động và thực sự muốn sử dụng DirectorySearcher.Asynchronous = True. Microsoft cung cấp rất ít tài liệu về MSDNTrình tìm kiếm thư mục không đồng bộ (LDAP)

Một tìm kiếm không đồng bộ có thể hiển thị kết quả khi chúng được tìm thấy trong khi đồng thời tìm kiếm kết quả bổ sung. Điều này hữu ích cho các tác vụ chẳng hạn như điền các hộp danh sách.

Cài đặt mặc định cho thuộc tính này là sai.

Ứng dụng của tôi biết khi nào việc tìm kiếm được thực hiện. Tôi không thấy bất kỳ thuộc tính, sự kiện hoặc cuộc gọi lại nào sẽ cung cấp thông báo này. Có ai có bất kỳ ý tưởng làm thế nào để có được chức năng này?

Về cơ bản tôi đang tìm kiếm này:

  • Bắt đầu Async mục Tìm kiếm
  • Kết quả Quay trở lại một System.Collections.Concurrent.ConcurrentQueue (Tất Object)
  • Như DirectorySearcher đang chạy tôi có thể xử lý Items được thêm vào Hàng đợi

Cảm ơn rất nhiều sự giúp đỡ của bạn.

+0

Tôi đi cần tạo lớp của riêng tôi bằng cách sử dụng System.DirectoryServices.Protocols để có được chức năng này? –

Trả lời

1

DirectoryServices sử dụng ADSI để nói chuyện với AD. Khi bạn đặt async thành true, nó đặt tùy chọn tìm kiếm ADS_SEARCHPREF_ASYNCHRONOUS thành true bằng IDirectorySearch.SetSearchPreferences.

Đây là trang giải thích sự khác biệt giữa tìm kiếm đồng bộ hóa và không đồng bộ. http://msdn.microsoft.com/en-us/library/windows/desktop/aa746498(v=vs.85).aspx

Điều này mô tả phân trang. http://msdn.microsoft.com/en-us/library/windows/desktop/aa746414(v=vs.85).aspx

Nếu bạn đang làm một truy vấn lớn bạn có thể đẻ trứng chủ đề của riêng bạn hoặc sử dụng hồ bơi thread, thiết lập kích thước trang để một cái gì đó dưới 1000, và cư hàng đợi của bạn như là kết quả đi vào.

Các vấn đề liên quan