I'm working on the program for work, where the user is able to search AD for a asset tag of a certain computer. If it is found it will give them a list in a listbox. I have all of that working, but when they do the search the UI freezes. I'm new to VB and OO for that matter. I understand that it is freezing because the search is running on the same thread as the UI, but I cannot for the life of me get another thread to do the work. When I tried to do the search in another thread I can't update the listbox because its not on the same thread. Any help would be greatly appreciated. 

Function that searches AD:

```
   Private Function searchAd()

    'clear the results from previous entries
    ' AdResultListBox.Items.Clear()

    Try
        Dim rootEntry As New DirectoryEntry("GC://mydomaininfo")
        Dim searcher As New DirectorySearcher(rootEntry)

        'selects the Computer Name property
        searcher.PropertiesToLoad.Add("cn")

        Dim compname As String = PropertyTagTextbox.Text
        'searches using wildcards
        compname = "*" + compname + "*"

        searcher.Filter = "(&(name=" + compname + ")(objectcategory=moreADinformation))"

        Dim results As SearchResultCollection
        results = searcher.FindAll()

        Dim result As SearchResult

        For Each result In results

            'this is the part i'm having trouble with
            Me.AdResultListBox.Items.Add(result.Properties("cn")(0)

        Next

    Catch ex As Exception

    End Try
End Function

Private Sub ADSearchButton_Click(sender As Object, e As RoutedEventArgs) Handles ADSearchButton.Click
    AdResultListBox.Items.Clear()

    'create the new thread for searching
    Dim SearchThread As New Thread(AddressOf searchAd)
    SearchThread.Start()
End Sub

```