Просмотр какие папки сканирует программа с выводом пути в Label - Visual Basic .NET

Формулировка задачи:

Всех приветствую. Есть к примеру такой код:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim FBD3 As New FolderBrowserDialog
            If FBD3.ShowDialog = Windows.Forms.DialogResult.OK Then
                Button1.Enabled = False
 
                TextBox2.Text = FBD3.SelectedPath
                
                TextBox4.Text = IO.Directory.GetFiles(FBD3.SelectedPath, TextBox3.Text, IO.SearchOption.AllDirectories)(0)
 
                Button1.Enabled = True
            End If
        Catch ex As Exception
        End Try
    End Sub
Поиск по имени файла. При поиске программа как бы зависает. Суть вопроса: При выборе диска "C:" а искомый файл находиться например "C:\тест\тест.txt". Как мне допустим в Label1 увидеть какие в данный момент проверяет программа папки (как в антивирусниках строка сканирования например)? Честно я запарился не магу нечего найти (может не правильно запрашиваю у поиска )

Код к задаче: «Просмотр какие папки сканирует программа с выводом пути в Label - Visual Basic .NET»

textual
Public Class Form1
    Dim files() As String
    Private Sub Search(e As System.ComponentModel.DoWorkEventArgs, ByVal fold As String, ByVal mask As String, ByVal Recur As Boolean)
        Dim stack As Stack(Of String) = New Stack(Of String)
        stack.Push(fold)
        Do 'Цикл начинается
            If BackgroundWorker1.CancellationPending Then 'Если нажимаем кнопку отмены ТО-
                e.Cancel = True 'Возвращаем значение для отмены события "BackgroundWorker1" которое проверяется в "BackgroundWorker1_RunWorkerCompleted"
                Exit Sub
            End If
            fold = stack.Pop() 'Если мы не ищем файлы в подпапках то в "stack" будет одна запись и цикл закончится быстро
            Try
                files = System.IO.Directory.GetFiles(fold, mask)
                Label1.Text = fold ' в label1 отображаем текущую папку, в которой происходит поиск
 
                If files.Count >= 1 Then
                    TextBox2.Text = files(0) 'при первом совпадении с маской поиска результат заносится в textbox2 и поиск прекращаается
                    Exit Sub
                End If
 
                If Recur Then 'Если необходимо сканировать подпапки
                    For Each folder In IO.Directory.GetDirectories(fold)
                        stack.Push(folder)
                    Next
                End If
 
 
            Catch ex As Exception
            End Try
 
        Loop Until stack.Count = 0
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim FBD3 As New FolderBrowserDialog
        If FBD3.ShowDialog = Windows.Forms.DialogResult.OK Then
            TextBox1.Text = FBD3.SelectedPath ' выбираем папку и присваиваем textbox1 
            If BackgroundWorker1.IsBusy = False Then
                BackgroundWorker1.RunWorkerAsync() 'если BackgroundWorker1 ничем не занят, то мы его запускаем
            End If
        End If
    End Sub
 
    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Search(e, TextBox1.Text, "lnk_remake.exe", True) ' вызов процедуры поиска
        ' TextBox1.Text - где ищем
        ' "lnk_remake.exe" - имя файла с расширением, который ищем, можно использовать маску, к примеру, чтобы найти все .txt файлы, необходимо будет указать маску "*.txt"
 
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        CheckForIllegalCrossThreadCalls = False
    End Sub
End Class

11   голосов, оценка 3.818 из 5


СОХРАНИТЬ ССЫЛКУ