Gul*_*har 2 vb.net user-interface
我需要编写一个VB.Net 2008小程序来浏览所有寻找某些文件的固定驱动器.如果我将代码放在ButtonClick()中,UI会冻结,直到代码完成:
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
Run Code Online (Sandbox Code Playgroud)
Google返回了BackGroundWorker控件的信息:这是解决此问题的正确/方法吗?如果没有,你会推荐什么解决方案,可能只有一个非常简单的例子?
FWIW,我读到Application.DoEvents()是VBClassic的遗留物,应该避免.
谢谢.
这BackgroundWorker是解决问题的好方法.实际上文档说明了这一点:
BackgroundWorker类允许您在单独的专用线程上运行操作.下载和数据库事务等耗时的操作可能会导致用户界面(UI)在运行时停止响应.当您需要响应式UI并且遇到与此类操作相关的长时间延迟时,BackgroundWorker类提供了一种方便的解决方案.
| 归档时间: |
|
| 查看次数: |
20449 次 |
| 最近记录: |