1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

CV D'un codeur vb pour m'expliquer BackgroundWorker[Résolu]

Discussion dans 'Vos recrutements / Vos CVs' créé par popojp, 8 Mai 2014.

  1. popojp

    popojp Bûcheron

    Inscrit:
    24 Nov 2011
    Messages:
    139
    Points:
    98
    Sexe:
    Homme
    Bonjour à tous, j'ai un petit problème avec mon BackgroundWorker.
    Voici mon problème :
    [​IMG]

    Voici le code :
    [​IMG]


    Si personne ne sais quelqu'un pourrai me conseiller un forum pour pouvoir m'aider.
    Mon Skype : popojp6
    Merci
     
  2. Chai1310b

    Chai1310b Nouveau

    Inscrit:
    7 Oct 2012
    Messages:
    2
    Points:
    62
    Sexe:
    Homme
    C'est normal. Le BackgroundWorker créer ce qu'on appel un "Thread". C'est comme un autre processus mais qui appartient à ton programme. C'est pour optimisé les logiciels et faire de grosse taches en arrière plan.
    Là, tu essaie d’accéder à un membre d'un Thread (Listbox sur le Thread principal : celui de ta form) à partir d'un autre Thread (celui du BackgroundWorker)
    Et c'est impossible. Un Thread n'a pas le droit de manipuler une Form d'un autre Thread.

    Donc tu as plusieurs solutions :
    - Utiliser les délegates (c'est compliqué si tu ne t'y connais pas)

    - Mettre au démarrage de ton programme (dans Form_Load par exemple) cette commande :
    Control.CheckForIllegalCrossThreadCalls = False
    Cette commande va permettre à ton programme d'autoriser les Threads à modifiier les élements de la Form. (c'est la méthode la plus simple)

    - Ou alors, à chaque fois que tu veut modifier la form à partir d'un autre Thread, tu utilise la fonction Invoke de la form que tu veux modifier. Comme ça :
    Me.Invoke(Sub() ListBox1.Items.Add(foundfile) )
    (remplace Me par le nom de ta form si tu n'uitlise pas cette commande dans la même class que celle de ta form.


    Voilà, à toi de choisir la méthode qui te convient le mieux.
     
    • Utile Utile x 1
  3. popojp

    popojp Bûcheron

    Inscrit:
    24 Nov 2011
    Messages:
    139
    Points:
    98
    Sexe:
    Homme
    Merci, Chai1310b
     

Partager cette page