Vb.net 异步获取Active directory用户

Vb.net 异步获取Active directory用户,vb.net,active-directory,async-await,Vb.net,Active Directory,Async Await,如何异步查询Active directory。 我有一些代码可以让用户同步 Dim UserName as string = "" Dim Password as string = "" Dim LDAPPath As String = "" Dim DirectoryE As DirectoryEntry = New DirectoryEntry(LDAPPath, UserName, Password) Dim RootDSE As Director

如何异步查询Active directory。 我有一些代码可以让用户同步

    Dim UserName as string = ""
    Dim Password as string = ""
    Dim LDAPPath As String = ""
    Dim DirectoryE As DirectoryEntry = New DirectoryEntry(LDAPPath, UserName, Password)

    Dim RootDSE As DirectoryServices.DirectoryEntry = globalroot
    Dim objSearch As New System.DirectoryServices.DirectorySearcher(RootDSE)
    Dim oResult As DirectoryServices.SearchResultCollection = Nothing
    'objSearch.PropertiesToLoad.Add("uid")
    'objSearch.PropertiesToLoad.Add("cn")


    objSearch.Filter = "(&(objectcategory=user))"
    objSearch.PageSize = 500
    oResult = objSearch.FindAll
    For Each ldentry As SearchResult In oResult
        Console.WriteLine(ldentry.Properties("cn")(0).ToString)
    Next
    Console.ReadLine()

假设您使用的是.NET4.5。将代码更改为返回SearchResultCollection的函数:

那么就这样称呼它:

 Private Async Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click

        For Each ldentry As SearchResult In Await Task.Run(Function() GetAllUsers())
            Console.WriteLine(ldentry.Properties("cn")(0).ToString)
        Next
        Console.ReadLine()
    End Sub

wait是否会导致在后台运行单独的任务。wait task.run函数是否只返回SearchResultCollection,或者是否可以返回一个ObjectsAwait列表?Await会导致程序异步等待任务返回。你可以返回任何你喜欢的东西,只要你把它包装在一个任务中
 Private Async Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click

        For Each ldentry As SearchResult In Await Task.Run(Function() GetAllUsers())
            Console.WriteLine(ldentry.Properties("cn")(0).ToString)
        Next
        Console.ReadLine()
    End Sub