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

Windows Forms Discussion :

Problème BackgroundWorker - WebBrowser - Delegate


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut Problème BackgroundWorker - WebBrowser - Delegate
    Hello,

    J'ai VC# 2005 Express.


    Je dois executer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    webBrowser.Navigate();
    Fonction() <-- qui utilise aussi des composants de la form


    Biensûr, ça ne fonctionne ni avec les threads, ni avec le BackgroundWorker car j'essaie d'acceder aux composants de la form, on m'a conseillé d'utiliser un delegate avec des fonctions Invoke().

    Honnêtement, après avoir bien cherché, j'ai toujours pas réussi à mettre ça en place, avez-vous un exemple svp pour que je puisse executer cette fonction ?



    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Je ne comprends pas exactement ce qui tu veux faire. Tu peux être plus explicite ?

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    comme dit Kaidan, sans code, on ne peut pas reellement t'aider. Mais pour comprendre le concept, tu ne peux acceder à un membre d'une form (lecture et ecriture) si tu n'es pas sur le thread qui a instancié cette derniere (ce n'est pas forcement vrai pour tous les membres mais autant s'en tenir à ca). Donc si tu veux avoir accès à ses membres depuis ton deuxieme thread, tu dois invoker (par ... Invoke()) une methode sur la Form pour obtenir ou modifier les valeurs qui t'interressent.

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    Je souhaite:

    1) Executer Navigate
    2) Attendre que le document soit chargé
    3) Effectuer des actions sur le WebBrowser, mais aussi utiliser un DataSet de la form.


    Par contre, je ne comprends pas du tout la notion de "delegate", comment faire ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Un delegate, ce n'est rien d'autres qu'une classe qui peut (en l'instanciant) contenir un ou des pointeurs de methodes. Cela permet d'utiliser une methode comme une variable et de l'invoquer non plus en dur (Truc()) mais en passant par cette variable.

    Bref tu fais une methode qui fait les actions voulues sur la form, et tu créé un delegué correspondant à la signature de cette methode. Ensuite dans ton code, dans le backgroundworker, tu invokes sur la form le delegué pointant vers ta methode.

    Nota : le dataset, tu peux l'utiliser sur le thread du worker, ca ne reclame pas d'invoke (enfin à mon souvenir). Exposes juste une propriété pour recuperer ton dataset, pour pouvoir le recuperer.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    WebBrowser lance un événement DocumentCompleted lorsqu'il a terminé de charger un document. Tu peux donc abonner un gestionnaire à cet événement et y mettre ton code pour effectuer les actions sur le WebBrowser et sur le DataSet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème backgroundWorker et interthread
    Par so.generously dans le forum C#
    Réponses: 7
    Dernier message: 06/10/2010, 16h53
  2. Problème contrôle webBrowser
    Par csilas dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/08/2010, 15h09
  3. Problème BackgroundWorker dans un MDI
    Par fragmonster dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/02/2009, 10h23
  4. probléme avec webBrowser
    Par dalilnet dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 22/09/2008, 16h33
  5. Problème VB6, Webbrowser et Internet Explorer 7
    Par chefinf dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/08/2008, 10h57

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