Manipuleren van controls via thread

Status
Niet open voor verdere reacties.

tuning4you

Gebruiker
Lid geworden
3 jun 2007
Berichten
328
Ik heb een form aangemaakt dat een reeks .TXT bestanden doorzoekt naar een bepaalde tekst. Dit kan zeer lang duren waardoor mijn form bevriest.

Ik heb nu gevonden dat je dit via een thread kan uitvoeren. De thread doet al het werk in de achtergrond en je kan verder het form opvolgen (denk ik).

Het probleem is nu dat ik bepaalde controls wens uit te lezen vanuit mijn thread en ook gegevens wens te veranderen aan mijn listbox. Dit lukt me nog niet. Iemand een idee hoe ik dit kan oplossen?


In mijn form class heb ik het volgende:

Dim WithEvents ZoekObject As ZoekenClass

Sub AreaDoneEventHandler(ByVal tekst As String) Handles ZoekObject.ThreadDone
MsgBox(tekst)
End Sub


Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

ZoekObject = New ZoekenClass()
Dim Thread As New System.Threading.Thread(AddressOf ZoekObject.ZoekBestand)
Thread.Start()

end sub


In mijn ZoekenClass heb ik het volgende:

Public Event ThreadDone(ByVal tekst As String)

Sub ZoekBestand()
Dim tekst As String = txtFolder.Text
RaiseEvent ThreadDone(tekst)
End Sub
 
Hoii,
ik wil je wel helpen, maar dan zou ik het bij mijn eigen progje willen testen en daar scant hij me schijf af naar bestanden, maar hoe kan ik dat met een thread doen (dus dat me form niet bevriest)?

Deze code word gebruikt om te scannen:

Code:
 Private Sub Scan()
        CheckFiles("Patch.exe", "C:\")
        CheckFiles("Explorer32.exe", "C:\")
        CheckFiles("PNPSERV.EXE", "C:\")
        CheckFiles("botzor.exe", "C:\")
        CheckDir("Kazaa", "C:\")
    End Sub

Private Sub CheckFiles(ByVal fileName As String, ByVal target As String)
        Try
            For Each file As String In System.IO.Directory.GetFiles(target, fileName)
                System.IO.File.Delete(file)
            Next
        Catch ex As Exception
            Return
        End Try
        For Each dir As String In System.IO.Directory.GetDirectories(target)
            CheckFiles(fileName, dir)
        Next
    End Sub

Dus dan kan ik kijken of ik je kan helpen ;)
 
Waarom gebruik je eigelijk niet gewoon een backgroundworker? Dat geeft hetzelfde resultaat als met een thread..
 
Die vraag heb ik gisteren ook al gekregen. Maar ook daar kan ik niet mee overweg :).

Ik wens folders te controleren die ik selecteer in een listview. Mijn listview kan ik niet aanspreken vanuit een backgroundworker.
 
In mijn ZoekenClass heb ik het volgende:

Public Event ThreadDone(ByVal tekst As String)

Sub ZoekBestand()
Dim tekst As String = txtFolder.Text
RaiseEvent ThreadDone(tekst)
End Sub

Dat "txtFolder.Text"; moet dat de folder zijn die je moet checken?
 
Dat probleem is ondertussen van de baan. Dat was eigenlijk een voorbeeld.
Ik wil gewoon vanuit mijn backgroundworker of thread een listview controleren.

Dus kijken welke items ik geselecteerd heb en voor elk item een bewerking uitvoeren en vervolgens de tweede kolom aanvullen. Niet simpel dus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan