code doet het niet in backgroundworker

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Onderstaande code geeft allerlei rare foutmeldingen in de eerste regel (dikgedrukt) (zoals 'het pad (in formbegin.zoeken_textboxstartmap.text.tostring) is ongeldig')

Code:
Private Sub BackgroundWorkerzoeken_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles backgroundworkerzoeken.DoWork
   [B]For Each map As String In IO.Directory.GetDirectories(FormBegin.Zoeken_TextBoxStartMap.Text.ToString, "*", IO.SearchOption.AllDirectories)[/B]
      zoekresultaten.Add(map)
   Next
End Sub

Private Sub BackgroundWorkerzoeken_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles backgroundworkerzoeken.RunWorkerCompleted
   For Each item In zoekresultaten
      FormBegin.Zoeken_ListBoxZoekResultaten.Items.Add(item)
   Next
   FormBegin.Zoeken_ButtonStopZoeken.Enabled = False
   FormBegin.Zoeken_ButtonZoeken.Enabled = True
   FormBegin.Zoeken_ButtonBladerenStartMap.Enabled = True
   FormBegin.Zoeken_TextBoxStartMap.Enabled = True
End Sub

Echter: wanneer ik onderstaande code gebruik in de load-sub (of een button.click sub) doet hij het wel goed...
Code:
For Each map As String In IO.Directory.GetDirectories(FormBegin.Zoeken_TextBoxStartMap.Text.ToString, "*", IO.SearchOption.AllDirectories)
   zoekresultaten.Add(map)
Next
For Each item In zoekresultaten
   FormBegin.Zoeken_ListBoxZoekResultaten.Items.Add(item)
Next
FormBegin.Zoeken_ButtonStopZoeken.Enabled = False
FormBegin.Zoeken_ButtonZoeken.Enabled = True
FormBegin.Zoeken_ButtonBladerenStartMap.Enabled = True
FormBegin.Zoeken_TextBoxStartMap.Enabled = True

Er zit geen verschil tussen de codes. toch geeft deze bij de backgroundworker een foutmelding, en buiten de backgroundworker niet.
Hoe kan ik deze ook IN de backgroundworker werkend krijgen?

P.S.: de reden dat ik de code IN een backgroundworker wil is omdat de code erg lang duurt en het programma ondertussen verder moet kunnen...
 
Gokje. Is die foutmelding soms:

System.InvalidOperationException was unhandled by user code

"Het is niet toegestaan een bewerking uit te voeren via verschillende threads: er werd vanaf een andere thread toegang gekregen tot het besturingselement lblStatus dan de thread waarop het element is gemaakt."


In dat geval plaats je:
CheckForIllegalCrossThreadCalls = False
in de sub die RunWorkerAsync aanroept.
 
Gokje. Is die foutmelding soms:

System.InvalidOperationException was unhandled by user code

...

Helaas, verkeerd gegokt. ik zei al dat de meest voorkomende foutmelding 'het pad is ongeldig' is... Terwijl ik met hetzelfde pad buiten de backgroundworker dit meldinkje niet krijg...
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan