Ik ben bezig met een soort van fuifmediaplayer. Nu lees ik tijdens mijn formload de muziekmappen uit en steek ik de bestandsnamen in een datagridview (ook artiest, title en dergelijke maar dat doet er niet toe).
Nu heb ik een spashscreen gemaakt en daarin een label gezet. Die label laat ik aanpassen in de loop die mijn mappen uitleest. Hier geeft VB.NET in DEBUG modus een fout:
Cross-thread operation not valid: Control 'lblloading' accessed from a thread other than the thread it was created on.
Het werkt zonder fout als ik de app normaal open, maar in debug geeft hij een fout. Volgens mij google kunsten is dit gewoon een veiligheid om brakke code te voorkomen en moet ik werken door een aparte thread te invoken. Nu ben ik al uren bezig met delegates, invoken links en rechts maar ik kom er niet uit.
Ik heb dus 2 forms: main en splash. In de main roep ik de subprocedure "dgSongsPrepareAndFill" op die de datagrid vult op de main form en terwijl een label aanpast op de splash.
Ik ben mijn oplossing aan het zoeken in de trend van:
en dan oproepen in de dgSongsPrepareAndFill met:
LoadingLabelAdapter(filInfo.Name)
Kan iemand me hier even op het juiste pad zetten aub?
Indien je meer info nodig hebt dan geef ik dit natuurlijk graag.
Nu heb ik een spashscreen gemaakt en daarin een label gezet. Die label laat ik aanpassen in de loop die mijn mappen uitleest. Hier geeft VB.NET in DEBUG modus een fout:
Cross-thread operation not valid: Control 'lblloading' accessed from a thread other than the thread it was created on.
Het werkt zonder fout als ik de app normaal open, maar in debug geeft hij een fout. Volgens mij google kunsten is dit gewoon een veiligheid om brakke code te voorkomen en moet ik werken door een aparte thread te invoken. Nu ben ik al uren bezig met delegates, invoken links en rechts maar ik kom er niet uit.
Ik heb dus 2 forms: main en splash. In de main roep ik de subprocedure "dgSongsPrepareAndFill" op die de datagrid vult op de main form en terwijl een label aanpast op de splash.
Ik ben mijn oplossing aan het zoeken in de trend van:
code:
1
2
3
4
5
6
7
8
9
10
11
| Private Delegate Sub myLoadingLabelAdapter(ByVal text As String) Private Sub LoadingLabelAdapter(ByVal text As String) If frmSplash.lblLoading.InvokeRequired Then Dim d As New myLoadingLabelAdapter(AddressOf LoadingLabelAdapter) frmSplash.lblLoading.Invoke(d, text) Else frmSplash.lblLoading.Text = text End If End Sub |
en dan oproepen in de dgSongsPrepareAndFill met:
LoadingLabelAdapter(filInfo.Name)
Kan iemand me hier even op het juiste pad zetten aub?
Indien je meer info nodig hebt dan geef ik dit natuurlijk graag.