1
Guys I was needing to use the Threads (or something that doesn’t lock the program while the code doesn’t finish running) in that code, but always gives a different error, so I need your help.
I was starting the action with a button.
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim var2 As String = "C:\...\Pasta de Video"
ListView1.Clear()
PegarImagemDosVideos(var2)
Esc(var2)
End Sub
That runs this sub that filters some data.
Private Sub Esc(ByVal CaminhoPastaVideos As String)
Dim gp As New ListViewGroup(CaminhoPastaVideos) With {
.Name = CaminhoPastaVideos
}
ListView1.Groups.Add(gp)
If FileIO.FileSystem.GetFiles(CaminhoPastaVideos, FileIO.SearchOption.SearchTopLevelOnly, "*.mp4", "*.avi", "*.wmv", "*.mkv").Count > 0 Then 'Pega os videos soltos na pasta.
For Each video In FileIO.FileSystem.GetFiles(CaminhoPastaVideos, FileIO.SearchOption.SearchTopLevelOnly, "*.mp4", "*.avi", "*.wmv", "*.mkv")
ColocarPastasDestroDoListView(video, gp)
Next
End If
If FileIO.FileSystem.GetDirectories(CaminhoPastaVideos, FileIO.SearchOption.SearchTopLevelOnly).Count > 0 Then 'Verifica se tem pastas na pasta passada na Sub.
For Each pastas In FileIO.FileSystem.GetDirectories(CaminhoPastaVideos, FileIO.SearchOption.SearchTopLevelOnly)
If FileIO.FileSystem.GetFiles(pastas, FileIO.SearchOption.SearchTopLevelOnly, "*.mp4", "*.avi", "*.wmv", "*.mkv").Count = 1 Then 'Se tiver menos que 2 videos joga no grupo anterior.
For Each video In FileIO.FileSystem.GetFiles(pastas, FileIO.SearchOption.SearchAllSubDirectories, "*.mp4", "*.avi", "*.wmv", "*.mkv")
ColocarPastasDestroDoListView(video, gp)
Next
ElseIf FileIO.FileSystem.GetFiles(pastas, FileIO.SearchOption.SearchAllSubDirectories, "*.mp4", "*.avi", "*.wmv", "*.mkv").Count > 1 Then
If FileIO.FileSystem.GetFiles(pastas, FileIO.SearchOption.SearchTopLevelOnly, "*.mp4", "*.avi", "*.wmv", "*.mkv").Count >= 1 Then 'Se tiver mais que 1 videos cria um novo grupo e joga os videos nele.
Dim gpi As New ListViewGroup(CaminhoPastaVideos) With {
.Name = pastas
}
ListView1.Groups.Add(gpi)
For Each video In FileIO.FileSystem.GetFiles(pastas, FileIO.SearchOption.SearchTopLevelOnly, "*.mp4", "*.avi", "*.wmv", "*.mkv")
ColocarPastasDestroDoListView(video, gpi)
Next
ElseIf FileIO.FileSystem.GetDirectories(pastas, FileIO.SearchOption.SearchTopLevelOnly).Count > 0 Then 'Se tiver menos que 2 videos repete o processo.
Esc(pastas)
End If
End If
Next
End If
End Sub
And finally she executes this code that adds the images to itens of listView.
Private Sub ColocarPastasDestroDoListView(ByVal Caminho As String, gp As ListViewGroup)
Dim caminho_saida As String = "C:\Users\...\source\repos\ApenasPronto\ApenasPronto\Thumb\"
Dim caminho_thumb As String
Dim name_arquivos As String
Dim formato_imagem As String = ".png"
Dim xx As Image
name_arquivos = System.IO.Path.GetFileNameWithoutExtension(Caminho)
caminho_thumb = caminho_saida + name_arquivos + formato_imagem
Using str As Stream = File.OpenRead(caminho_thumb)
xx = Image.FromStream(str)
thumbnail.Images.Add(xx)
End Using
ListView1.LargeImageList = thumbnail
Dim lvi As New ListViewItem
lvi = New ListViewItem With {
.Text = name_arquivos,
.ImageIndex = cont,
.Group = gp
}
ListView1.Items.Add(lvi)
cont += 1
End Sub
Some of the mistakes I had were in the lines: ListView1.Groups.Add(gpi) and ListView1.LargeImageList = thumbnail. Besides I can’t do it Dim td As New Threading.Thread(AddressOf Esc("C:\...\videos"))why the AddressOf does not allow use ("C:\...\videos") then how do I fix it?
Guys, I’ve been racking my brain about this for a long time, so if you can help me figure this out, I’d really appreciate it.
Hi @Lucas. You want to use
threadwhere? In the methodColocarPastasDestroDoListView?– João Martins
Yes. This part takes a while to be executed and so the program "freezes" until it finishes.
– Lucas Pedro
places within a backgroudworcker that the program continues to run normally during work http://www.macoratti.net/vbn5_ept.htm
– Magno Souza