Bonjour à la communauté,

Le sujet que j'évoque à du être déjà abordé, mais je n'ai pas trouvé de réponse à ma problématique. Je souhaite afficher une form précisant 'Chargement en cours' au load d'une autre form qui charge un datagridview + des combobox.

La form d'attente s'affiche correctement, mais ne se ferme pas, l'information de stopper le thread ne semble pas être prise en compte...
Je précise que bgw_wait.workersupportscancellation est à true.

Un idée, en vous remerciant par avance.

Thierry

Ci-dessous mon code :

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Sub Frm_main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Frm_menu.Hide()
 
        Bgw_wait.RunWorkerAsync()
 
        Refresh_dgv1()
 
        'Vérification si le user est en lecture seule
        Lecture_seule()
 
        If Not (user_level Like "Reader*") Then
            ' Les combobox sont alimentées exclusivement si user = writer
            'Combobox à valeurs fixes
            ' DBremplir_cbb_lot()
            DBremplir_cbb(cbb_type_reconduction, "type_reconduction")
            DBremplir_cbb_nb_reconduction()
            DBremplir_cbb_duree_reconduction()
            DBremplir_cbb(cbb_type_marche, "type_marche")
            DBremplir_cbb(cbb_titulaire, "titulaire")
            DBremplir_cbb(cbb_lot, "lot")
            DBremplir_cbb(cbb_service, "service")
 
 
            'Sélection du service par défaut si 1 seul item
            If cbb_service.Items.Count = 1 Then
                cbb_site.SelectedItem = 0
            End If
 
            'Combobox à valeurs variables
            DBremplir_cbb(cbb_origine, "origine")
            DBremplir_cbb(cbb_site, "site")
 
            'Sélection du site par défaut si 1 seul item
            If cbb_site.Items.Count = 1 Then
                cbb_site.SelectedItem = 0
            End If
 
            Dbremplir_cbb_famille()
 
            'cbb_service : Valeur par défaut du service
            If user_level <> "Admin" Then
                If cbb_service.Items.Count > 0 Then cbb_service.SelectedIndex = 0
            End If
        End If
 
        'Stop du thread appelé par bgw_wait
        Bgw_wait.CancelAsync()
 
    End Sub
Le dowork :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#Region "Wait"
    'Affichage d'une form d'attente pendant le chargement de cette form
    Private Sub Bgw_wait_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles Bgw_wait.DoWork
        If Bgw_wait.CancellationPending Then
            e.Cancel = True
            Frm_wait.Close()
            Exit Sub
        Else
            Frm_wait.ShowDialog()
        End If
    End Sub
#End Region