Site icon Bernard Aybout's Blog – MiltonMarketing.com

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

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

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]

Exit mobile version