Backgroundwoker au onload d'une form
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:
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:
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 |
Suite recommandations de youtpout978
Ma Dgv ne s'affiche pas, ma form d'attente reste affichée (showdialog)....
:calim2: