Wie kann ich verhindern, dass die Benutzeroberfläche bei längeren Vorgängen einfriert?

Ich muss ein VB.Net 2008-Applet schreiben, um alle Festplatten nach Dateien zu durchsuchen. Wenn ich den Code in ButtonClick () einfüge, friert die Benutzeroberfläche ein, bis der Code fertig ist:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'TODO Find way to avoid freezing UI while scanning fixed drives

    Dim drive As DriveInfo
    Dim filelist As Collections.ObjectModel.ReadOnlyCollection(Of String)
    Dim filepath As String

    For Each drive In DriveInfo.GetDrives()
        If drive.DriveType = DriveType.Fixed Then
            filelist = My.Computer.FileSystem.GetFiles(drive.ToString, FileIO.SearchOption.SearchAllSubDirectories, "MyFiles.*")
            For Each filepath In filelist
                'Do stuff
            Next filepath
        End If
    Next drive
End Sub

Google hat Informationen zu einem BackGroundWorker-Steuerelement zurückgegeben: Ist dies der richtige Weg, um dieses Problem zu lösen? Wenn nicht, welche Lösung würden Sie empfehlen, möglicherweise mit einem wirklich einfachen Beispiel?

FWIW, ich habe gelesen, dass Application.DoEvents () ein Überbleibsel von VBClassic ist und vermieden werden sollte.

Danke.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage