Ik probeer al geruime tijd om (in het begin een listbox nu) een listview te vullen via verschillende threads maar welk voorbeeld dat ik ook volg, de invoke werkt niet. De laatste how to dat ik heb gevolgt is die van MS zelf: MSDN: How to: Make Thread-Safe Calls to Windows Forms Controls.
Ik heb een break point op de debug.writeline gezet en daar komt ie nooit in
Relevante code:
Wat gebeurd er:
in de threads roep ik een functie aan die als het log venster openstaat de Updatelog() sub aanroept. Deze zou moeten checken of het nodig is om de listview te invoken of niet en dat gebeurt dus niet. De if stuurt de data rechtstreeks door naar de RefreshLog() sub en dan zie je pas iets verschijnen als ie terug in de main thread zit.
Nu is het wel zo dat de RefreshLog() sub word uitgevoerd want ik zien wel dat ie de data ophaalt en de laatste id naar het debug venster schrijft.
Dus nu mijn vraag: wat gaat er verkeerd, want error's krijg ik niet
Relevante software:
VS2017 community, win10 (op win7 werkte het ook niet)
Ik heb een break point op de debug.writeline gezet en daar komt ie nooit in
Relevante code:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Delegate Sub UpdateLogDelegate([DayStart] As String, [DayStop] As String) Public Sub UpdateLog(Optional DayStart As String = "NOW", Optional DayStop As String = "NOW") If lvLog.InvokeRequired Then Debug.WriteLine("updatelog.invoke") Invoke(New UpdateLogDelegate(AddressOf UpdateLog), New Object() {[DayStart], [DayStop]}) 'New Action(Of String, String)(AddressOf UpdateLog), DayStart, DayStop) Else RefreshLog([DayStart], [DayStop]) End If End Sub Private Sub RefreshLog(Optional DayStart As String = "NOW", Optional DayStop As String = "NOW") '-set filter '... al de rest van de code end sub |
Wat gebeurd er:
in de threads roep ik een functie aan die als het log venster openstaat de Updatelog() sub aanroept. Deze zou moeten checken of het nodig is om de listview te invoken of niet en dat gebeurt dus niet. De if stuurt de data rechtstreeks door naar de RefreshLog() sub en dan zie je pas iets verschijnen als ie terug in de main thread zit.
Nu is het wel zo dat de RefreshLog() sub word uitgevoerd want ik zien wel dat ie de data ophaalt en de laatste id naar het debug venster schrijft.
Dus nu mijn vraag: wat gaat er verkeerd, want error's krijg ik niet
Relevante software:
VS2017 community, win10 (op win7 werkte het ook niet)
[ Voor 4% gewijzigd door Damic op 05-06-2017 22:34 ]
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag