Bonjour à tous,
Je suis vraiment en difficulté pour faire ce que je veux avec les BackGroundWorker.
Alors en fait j'ai 4 gros blocs de données à charger en arrière plan juste après l'affichage de ma Form.
Je voudrais enchaîner le chargement de ces 4 blocs (DoWork) plutôt que les charger tous en parallèle pour une raison simple, c'est que je voudrais pouvoir afficher la progression des ces 4 blocs indépendamment les uns après les autres via un seul ToolstripProgressBar et un ToolStripStatusBar en bas de ma Form.
De plus ma Form est composé de 4 TabConcrol, chacun correspondant à ces 4 blocs de données. Et quand le 1er bloc de données a fini de charger je voudrais pouvoir remplir les contrôles correspondant dans TabControl1 (RunWorkerCompleted) tout de suite sans attendre la fin du chargement de la totalité des 4 blocs de données et ainsi de suite. Ceci pour pouvoir prendre la main sur le TabControl qui à fini de charger.
J'ai tenté ceci mais ça bloque l'affichage de l'UI forcement et contrôler la propriété BackGroundworker.IsBusy ne marche pas non plus :
Et si j’enlève les Do While tous les Background fonctionne en même temps.
Merci beaucoup pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private LoadingData1Completed As Boolean Private LoadingData2Completed As Boolean Private LoadingData3Completed As Boolean Private LoadingData4Completed As Boolean bgw1.RunWorkerAsync() Do While Not LoadingData1Completed Loop bgw2.RunWorkerAsync() Do While Not LoadingData2Completed Loop bgw3.RunWorkerAsync() Do While Not LoadingData3Completed Loop bgw4.RunWorkerAsync() Do While Not LoadingData4Completed Loop
Partager