Active Directory 内のローカル マシンを列挙するために、次のコードをスレッドで実行しています。これは完了するまでに時間がかかるため (約 5 ~ 10 秒)、列挙が完了する前にユーザーがアプリケーションを終了すると、アプリケーションの終了に 5 ~ 10 秒かかります。thread.abort を試しましたが、For Each SubChildEntry In SubParentEntry.Children
完了するのを待っているため、これが戻るまで中止されません。
Dim childEntry As DirectoryEntry = Nothing
Dim ParentEntry As New DirectoryEntry
ParentEntry.Path = "WinNT:"
For Each childEntry In ParentEntry.Children
Windows.Forms.Application.DoEvents()
Select Case childEntry.SchemaClassName
Case "Domain"
Dim SubChildEntry As DirectoryEntry
Dim SubParentEntry As New DirectoryEntry
SubParentEntry.Path = "WinNT://" & childEntry.Name
'The following line takes a long time to complete
'the thread will not abort until this returns
For Each SubChildEntry In SubParentEntry.Children
Select Case SubChildEntry.SchemaClassName
Case "Computer"
_collServers.Add(SubChildEntry.Name.ToUpper)
End Select
Next
End Select
Next
RaiseEvent EnumComplete()