ユーザーがADで特定のコンピューターの資産タグを検索できる、仕事用のプログラムに取り組んでいます。見つかった場合は、リストボックスにリストが表示されます。すべてが機能していますが、検索を行うと UI がフリーズします。私はVBとOOが初めてです。検索が UI と同じスレッドで実行されているため、フリーズしていることは理解していますが、私の人生では別のスレッドで作業を行うことはできません。別のスレッドで検索しようとしたとき、同じスレッド上にないため、リストボックスを更新できません。どんな助けでも大歓迎です。
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