Поиск файлов по папке и подпапкам (поправить код) - Visual Basic .NET

Узнай цену своей работы

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

Есть код поиска файлов по маске:
Во время его работы форма зависает. Как бы его переделать с потоком или BackgroundWorker? Сам пробовал - не получилось.

Решение задачи: «Поиск файлов по папке и подпапкам (поправить код)»

textual
Листинг программы
Imports System.Threading
Public Class Form1
    Public Class Param
        Private _Fold As String
        Private _Mask As String
 
        Public Property Fold As String
            Get
                Return _Fold
            End Get
            Set(value As String)
                _Fold = value.ToString
            End Set
        End Property
 
        Public Property Mask As String
            Get
                Return _Mask
            End Get
            Set(value As String)
                _Mask = value.ToString
            End Set
        End Property
    End Class
 
    Private Delegate Sub Add_Range(ByVal T As String)
 
    Private Sub Write_2_lst(ByVal T As String)
        If Not (InvokeRequired) Then
            ListBox1.Items.Add(T)
        Else
            Invoke(New Add_Range(AddressOf Write_2_lst), T)
        End If
    End Sub
 
    Private Sub Search(p As Param)
 
        Dim Dirs() As String
        Dim files() As String
 
        Try
            files = System.IO.Directory.GetFiles(p.Fold, p.Mask)
            For i = 0 To files.Length - 1
                Write_2_lst(files(i))
            Next
        Catch
        End Try
        Try
            Dirs = System.IO.Directory.GetDirectories(p.Fold, "*", IO.SearchOption.TopDirectoryOnly)
            If Not Dirs Is Nothing Then
                For Each cdir In Dirs
 
                    Dim p1 As New Param
 
                    p1.Fold = cdir
                    p1.Mask = p.Mask
                    Search(p1)
 
                Next
            End If
        Catch
        End Try
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim p As New Param
        p.Fold = "C:\"
        p.Mask = "*.png"
        Dim th As New Thread(AddressOf Search)
        th.Start(p)
    End Sub
 
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы