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 :

Gérer une action qui dure trop longtemps


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Par défaut Gérer une action qui dure trop longtemps
    Bonjour,

    Je développe une application en vb.net qui permet de tester la validité de plusieurs urls.

    Apparemment, mon programme reste bloqué lors du test d'une url et toute l'application est stoppée.

    Je souhaiterais donc pouvoir définir un temps de traitement maximum et pouvoir passer à l'Url suivante lorsque le traitement d'une url est trop long.
    Mais d'un autre côté, je ne veux pas ralentir le test des urls lorsque celles ci ne posent pas de probléme.

    Pourriez vous m'aider à savoir ce que je dois utiliser pour gérer ce problème et de quelle maniére?

    merci par avance

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    exécute ta procédure de test dans un thread différent du thread principal.... regarde du coté du backgroundworker ou du coté des threads.. ça va t'aider bcp

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 68
    Par défaut
    J'utiliserais une fonction délégué comme ça tu peux mettre un timeout à ta fonction... je pense que ça correspond à ton problème.

    Exemple (un truc du genre) :

    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
     
    delegate string delTestUrl(string aUrl);
    public String getUrlPrincipal(string aUrl, int aTimeOutMillisecond)
    {        
        delTestUrl oDel = new delTestUrl(testerUrl);
        IAsyncResult oRes = oDel.BeginInvoke(aUrl,null,null);
        if(!oRes.IsCompleted)
        {
            oRes.AsyncWaitHandle.WaitOne(aTimeOutMillisecond,false);
            if(!oRes.IsCompleted)
                throw new Exception("Timeout");
        }
        return oDel.EndInvoke((AsyncResult)oRes);
    }
    private string testerUrl(string aUrl)
    {
        //ton traitement
        //...
    }
    Enfin, voilà j'expère que c'est assez clair... et que j'ai pas fais de bêtise

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Par défaut Test
    Merci pour ces réponses.
    je vais tester ca et je vous tiens au courant du résultat!

Discussions similaires

  1. comment sortir d'une boucle qui dure trop?
    Par gaston11 dans le forum Débuter
    Réponses: 8
    Dernier message: 07/01/2013, 23h34
  2. Créer un Timeout sur un code qui dure trop longtemps
    Par astrotouf dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2011, 17h53
  3. [VBSCRIPT] Faire une boucle qui dure quelques secondes
    Par M4tthieu dans le forum VBScript
    Réponses: 6
    Dernier message: 03/07/2007, 13h49
  4. Réponses: 9
    Dernier message: 18/05/2007, 20h40
  5. redirection sur une action qui ne marche pas
    Par Invité dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/08/2006, 20h16

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