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 :

synchroniser 2 tâches ?


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 12
    Points
    12
    Par défaut synchroniser 2 tâches ?
    Salut j'ai réaliser un code qui vérifie si une adresse web est valide, et je l'ai inclus dans ma Form (Handles Me.Shown)

    le problème est: quand le code est en cours d'exécution (ça prend quelques secondes pour vérifier l'adresse) et dans ce temps l'application est bloquée (ne repend pas)

    je veux avoir la main sur l'application en même temps que l'adresse en cours de vérification

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Exécute la requête dans un thread distinct, soit en créant directement le thread, soit avec un BackgroundWorker
    Cherche sur le forum, y a plein d'exemples

  3. #3
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par cesar333 Voir le message
    Salut j'ai réaliser un code qui vérifie si une adresse web est valide, et je l'ai inclus dans ma Form (Handles Me.Shown)

    le problème est: quand le code est en cours d'exécution (ça prend quelques secondes pour vérifier l'adresse) et dans ce temps l'application est bloquée (ne repend pas)

    je veux avoir la main sur l'application en même temps que l'adresse en cours de vérification

    Bonjour,

    Tu peux essayer ceci pour rendre la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        My.Application.DoEvents()

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Ehjoe Voir le message
    Tu peux essayer ceci pour rendre la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        My.Application.DoEvents()
    Oui mais non... d'une part, ça ne peut s'utiliser que si le traitement s'effectue dans une boucle, de façon à pourvoir glisser cette instruction dans la boucle. Or ici c'est une requête HTTP qui prend du temps, donc où mettrais-tu l'appel à DoEvents ? L'exécution de la requête HTTP n'est pas "divisible"...

    D'autre part, DoEvents est généralement à éviter, parce que ça peut causer des problèmes de réentrance, avec des conséquences difficiles à identifier (EDIT: voir l'avertissement dans la doc)

  5. #5
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Points : 132
    Points
    132
    Par défaut
    Bonsoir TomLev,

    Je mettrais le doEvents avant l'instruction d'accès au Net, car sinon cette dernière va bloquer la lecture du code en séquence et ça n'ira pas avant traitement au doEvents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    My.Application.DoEvents()
    webBrowser = accès URL Net
    A essayer, qui vivra verra...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Ehjoe Voir le message
    Je mettrais le doEvents avant l'instruction d'accès au Net, car sinon cette dernière va bloquer la lecture du code en séquence et ça n'ira pas avant traitement au doEvents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    My.Application.DoEvents()
    webBrowser = accès URL Net
    Bah ça changera rien... la requête sera toujours aussi longue et bloquera toujours l'UI. Pour que ça marche il faudrait faire des DoEvents pendant que la requête s'exécute

  7. #7
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah ça changera rien... la requête sera toujours aussi longue et bloquera toujours l'UI. Pour que ça marche il faudrait faire des DoEvents pendant que la requête s'exécute

    Bonjour, je viens de tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Option Explicit On
    Public Class Form1
      ' webBrowser1
      Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        WebBrowser1.Navigate("http://irolog.free.frx")
        MsgBox("ok")
      End Sub
    End Class
    Ben ça ne bloque rien assynchrone, pendant que le WB cherche mon adresse inexistante, le code passe en séquence au msgbox "ok"...

    On est en train de chercher une solution à un problème qui n'existe pas

    Faudrait qu'il nous montre son code !

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Ehjoe Voir le message
    Ben ça ne bloque rien assynchrone, pendant que le WB cherche mon adresse inexistante, le code passe en séquence au msgbox "ok"...

    On est en train de chercher une solution à un problème qui n'existe pas
    T'es têtu, hein

    Avec un WebBrowser ça fonctionne effectivement, parce qu'il fait la requête de façon asynchrone, mais ça m'étonnerait que cesar333 utilise un WebBrowser pour vérifier une adresse... il doit probablement utiliser un WebClient ou une HttpWebRequest, et ça c'est synchrone (à moins d'utiliser les méthodes asynchrones évidemment)

  9. #9
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par tomlev Voir le message
    T'es têtu, hein

    Avec un WebBrowser ça fonctionne effectivement, parce qu'il fait la requête de façon asynchrone, mais ça m'étonnerait que cesar333 utilise un WebBrowser pour vérifier une adresse... il doit probablement utiliser un WebClient ou une HttpWebRequest, et ça c'est synchrone (à moins d'utiliser les méthodes asynchrones évidemment)

    Ben j'ai raison d'être têtu, là preuve, j'ai trouvé comme résudre son problème, ah...

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Ehjoe Voir le message
    Ben j'ai raison d'être têtu, là preuve, j'ai trouvé comme résudre son problème, ah...
    Sauf que ça m'étonnerait que l'utilisation d'un WebBrower réponde à son besoin...

Discussions similaires

  1. Synchronisation de tâches
    Par supcomingenieur dans le forum Général Java
    Réponses: 1
    Dernier message: 17/04/2013, 21h09
  2. Synchronisation de tâches (sémaphores)
    Par JustMed dans le forum Embarqué
    Réponses: 3
    Dernier message: 14/05/2012, 17h17
  3. [SQL-Server] Synchronisation entre deux BD MS SQL et tâche planifiée (avec PHP)
    Par beegees dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 18/12/2010, 16h06
  4. Synchronisation de tâche
    Par greg08 dans le forum Langage
    Réponses: 6
    Dernier message: 08/09/2008, 17h25
  5. Synchronisation de tâches
    Par Laverdure_mt dans le forum Access
    Réponses: 1
    Dernier message: 21/12/2006, 09h31

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