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.
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
Merci beaucoup pour votre aide.