⚡ Rocket.net – Managed WordPress Hosting

MiltonMarketing.com  Powered by Rocket.net – Managed WordPress Hosting

Bernard Aybouts - Blog - MiltonMarketing.com

Approx. read time: 2.8 min.

Post: VB.NET Code to search hard drive in background multi-thread

VB.NET Code to search hard drive in background multi-thread:

After many requests from all of you, I have written the requested code in VB.net to do the following:

Pseudo Code: (What will our program do in simple English terminology.)

  • Search ALL hard drives, USB media, etc..
  • Search ALL directories & sub-directories, on ALL hard drives.
  • Place the DRIVE, DIRECTORIES, FILENAME in a memory ARRAY and a text file. Example:
    • C:\FILENAME.EXT
    • C:\WINDOWS\FILENAME.EXT
    • D:\FILENAME.EXT
    • D:\BACKUP\FILENAME.EXT
    • etc…
  • Do this in a way that does not hog system resources. (background process and/or multi threading.)
  • Keep all errors from user and handle on own. (file access issues, errors, etc…)

VB.NET Code to search hard drive in background multi-thread:

To create this project create a VB.NET project with the following:

  • One Form (with name: Form1)
  • One BackgroundWorker (with name: BackgroundWorker1)

Open code window for Form1. Delete all the code. Then paste our code from here, and your program is complete.

.

VB.NET Code to search hard drive in background multi-thread

[vb]

Imports System.ComponentModel
Imports System.IO
Imports System.Threading
Imports Microsoft.VisualBasic.Devices

Public Class Form1

Public path As String = "c:\"
Public fileList As New List(Of String)

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

BackgroundWorker1.RunWorkerAsync()

End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Me.BackColor = Color.Green
End Sub

Sub GetAllAccessibleFiles(path As String, filelist As List(Of String))

For Each file As String In Directory.GetFiles(path, "*.*")
Application.DoEvents()

filelist.Add(file)
Next
For Each dir As String In Directory.GetDirectories(path)
Application.DoEvents()
Try
GetAllAccessibleFiles(dir, filelist)
Catch ex As Exception

End Try
Next
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Application.DoEvents()

For Each drive In DriveInfo.GetDrives
Application.DoEvents()

GetAllAccessibleFiles(drive.ToString, fileList)

‘Convert List to string array if you want
‘Dim files As String() = fileList.ToArray

Next

Application.DoEvents()

Using sw As New System.IO.StreamWriter("c:\filelist.txt")

For Each s As String In fileList
Application.DoEvents()

‘write to file

sw.WriteLine(s)

Next

sw.Flush() ”yeap I’m the sort of nerd that flushes it then closes it, just like my toilet. :-)
sw.Close()
End Using

End Sub
End Class

[/vb]

About the Author: Bernard Aybout (Virii8)

Avatar of Bernard Aybout (Virii8)
I am a dedicated technology enthusiast with over 45 years of life experience, passionate about computers, AI, emerging technologies, and their real-world impact. As the founder of my personal blog, MiltonMarketing.com, I explore how AI, health tech, engineering, finance, and other advanced fields leverage innovation—not as a replacement for human expertise, but as a tool to enhance it. My focus is on bridging the gap between cutting-edge technology and practical applications, ensuring ethical, responsible, and transformative use across industries. MiltonMarketing.com is more than just a tech blog—it's a growing platform for expert insights. We welcome qualified writers and industry professionals from IT, AI, healthcare, engineering, HVAC, automotive, finance, and beyond to contribute their knowledge. If you have expertise to share in how AI and technology shape industries while complementing human skills, join us in driving meaningful conversations about the future of innovation. 🚀