Werken met backgroundworker

Status
Niet open voor verdere reacties.

tuning4you

Gebruiker
Lid geworden
3 jun 2007
Berichten
328
Ik had graag een backgroundworker in mijn project gebruikt om directory's te gaan uitlezen. De directories worden samengevat in een listview. Ik weet echter totaal niet hoe ik de listview kan gaan uitlezen door mijn backgroundworker.

Iemand die me kan helpen?
 
Als je directories wil gaan toevoegen met een bgw word het redelijk complex hoor. Dan moet je met delegate subs enzo gaan werken omdat je dan met meerdere threads bezig bent.

Waarom wil je trouwens met een BGW werken?
 
Omdat mijn form vastloopt. Het wordt volledig wit.

Het enige wat ik wil is de directories die ik selecteer in mijn listview te laten doorzoeken op een bepaald bestand en vervolgens mijn listview aanvul.
 
Het zoorzoeken kan je bij de doWork event handler zetten, maar die listview aanvullen zou ik bij runWorkerCompleted gooien, anders word die redelijk (en onnodig) ingewikkeld.
 
Dus je wil controleren of een van de subitems van de geselecteerde items overeenkomt met een bestandsnaam, en die dan vervolgens ergens opslaan ofzo?

Waarom eigenlijk niet zonder BGW, tenzij je met een wel heel grote lijst zit lijkt me ook zonder te gaan. Of heb ik het verkeerd voor en wil je ook die mappen op je pc controlere ofzo?
 
Het is als volgt:
Ik selecteer een folder. Nadien wordt mijn listview opgevuld met subfolders van deze folder.

Ik duid in mijn listview aan welke subfolders ik wil doorzoeken. Per subfolder wordt dan elk bestandje aanwezig nagetrokken indien er een bepaalde tekst instaat.

Zo'n subfolder kan meer dan 40.000 TXT bestanden bevatten en ik verzeker u, het formulier loopt daarop vast. Het zoeken loopt nog maar de gebruiker krijgt de indruk dat het fout loopt.
 
Kan je je huidige code ff posten, dan kan ik zien of ik het gefixed krijg :)
 
Zal de code ff inkorten want anders geraak je er niet aan uit.

Wanneer de zoekopdracht gestart wordt speelt onderste stuk code hoofdzakelijk af.

For Each myItem In lvwSubDirs.Items
myItem.ImageIndex = vbNull
myItem.SubItems(1).Text = ""

If myItem.Checked Then
Dim objSubDirectory As DirectoryInfo = New DirectoryInfo(txtFolder.Text & "\" & myItem.Text)
objFileInfoArray = objSubDirectory.GetFiles(cmbExtensie.Text.Substring(0, 5))
CheckBestand(objFileInfoArray, txtZoek.Text)
myItem.ImageIndex = 0
myItem.Checked = False
myItem.SubItems(1).Text = objFileInfoArray.Length
End If
Next




Het tweede stuk is dus CheckBestand:

For Each objFileInfo In objFileInfoArray
strSourceFile = objFileInfo.FullName
Dim objStreamReader As New StreamReader(strSourceFile, System.Text.Encoding.Default)
strInhoud = (objStreamReader.ReadToEnd().ToLower)
objStreamReader.Close()

If strInhoud.IndexOf(strZoekterm.ToLower) > 0 Then
'plaats het bestand in een apparte directory...
End If
Next


Omdat mijn filearray dus voor 1 directory 40.000 bestanden moet nakijken indien de tekst aanwezig is kan mijn form dus vastlopen waardoor een gebruiker denkt dat er niks meer gebeurd :(.
Ik hoop dat jij of iemand anders me hiermee kan helpen om dit in een apparte thread te doen werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan