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.