IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Backgroundwoker au onload d'une form


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Par défaut 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 : 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

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Tu as un événement RunWorkerCompleted, c'est plutôt sur cet événement que tu devrais fermer ta form
    https://docs.microsoft.com/fr-fr/dot...tframework-4.8

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Par défaut Rép à youtpout978
    Bonsoir youtpout978,

    J'ai connaissance de cet événement, ma difficulté est : Comment préciser que le travail est terminé....

    Thierry

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Citation Envoyé par debian54 Voir le message
    Bonsoir youtpout978,

    J'ai connaissance de cet événement, ma difficulté est : Comment préciser que le travail est terminé....

    Thierry
    Pas besoin de le préciser, voici ce que dit Microsoft Se produit lorsque l'opération d'arrière-plan est terminée, a été annulée ou a levé une exception.

    En faite j'ai l'impression que tu utilises mal le backgroundworker, c'est dans le dowork que tu dois mettre le code qu'éxécute le backgroundworker, je pense que c'est ton code DBremplir_cbb(cbb_type_reconduction, "type_reconduction") ..
    Tu n'as pas besoin d'appeler cancel; une fois arrivé au bout des instructions il s'arrete tout seul et lance levenement completed

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2011
    Messages : 27
    Par défaut Rép à youtpout978
    Donc, je place dans le dowork :

    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
    ' Chargement du datagridview
            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
    et dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Bgw_wait_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles Bgw_wait.RunWorkerCompleted
            Frm_wait.Close()
        End Sub

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Oui ca serait plus un truc comme ça.

Discussions similaires

  1. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  2. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  3. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06
  4. [VB6] masquer la barre de titre d'une form
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2002, 17h54
  5. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo