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 6 et antérieur Discussion :

Perte de liaison avec une librairie externe.


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Perte de liaison avec une librairie externe.
    Bonjour,

    Je rencontre un problème dans mon problème, lorsque j'utilise une librairie extérieure et lorsque j'ai une perte de la liaison avec celle-ci.

    Donc j'ai une fonction qui utilise une librairie extérieur (MonEx.MaLib)
    Je définie ma variable (Set g_maLib = ....), une fois initialisée elle est bien présente dans les processus.

    Puis je boucle, jusqu'à temps que cette librairie se connecte à un serveur distant.
    Si la librairie n'arrive pas à se connecter, elle se "tue" toute seule; au moment ou l'on passe sur g_maLib.Connect, la boucle passe en erreur et va dans Error_Handled.
    A ce moment là, l'erreur suivante apparait : "Erreur Automation. L'objet invoqué s'est déconnecté de ses clients".
    J'ai donc une perte de liaison avec ma librairie.

    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
     
    Public WithEvents g_maLib As MonEx.MaLib
     
    Function maFunction()
        On Error GoTo Error_Handled
     
        Set g_maLib = New MonEx.MaLib
     
        Do While g_maLib.IsConnected = False And cpt / 60 < 5
            g_maLib.Connect
            cpt = cpt + 1
            Sleep (1000)
        Loop
        ...
     
    Error_Handled:
        debug.print g_maLib.Status 
        ...
    End Function
    Ma question est donc la suivante:
    Existe-il un moyen de détecter cette erreur ?

    Mon objectif est de relancer la librairie et recommencer l'opération.
    Seulement, je ne vois pas comment faire. Pourriez-vous m'aider dans ma recherche ??? Merci.

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Désolé de ne pouvoir répondre à ta question mais je n'ai aucune idée de ce que tu appelles une librairie exterieure telle que la décris. Peux tu en dire un peu plus, car j'ai l'impression d'avoir loupé un épisode.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Difficile d'avoir un avis précis avec si peu toutefois le code suivant me semble plus cohérent

    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
     
    Public WithEvents g_maLib As MonEx.MaLib
     
    Function maFunction()
        On Error GoTo Error_Handled
     
        Set g_maLib = New MonEx.MaLib
        g_maLib.Connect
     
        Do While g_maLib.IsConnected = False And cpt / 60 < 5
            cpt = cpt + 1
            Sleep (1000)
        Loop
        ...
     
    Error_Handled:
        debug.print g_maLib.Status 
        ...
    End Function
    D'autre part si tu déclares g_maLib avec withevents, il y a fort à parier qu'il y a
    un évènement gérant l'état connecté et donc permettant de gérer la connection en asynchrone,
    voir également un évènement permettant de gérer les erreurs de connection.

    Regarde de ce coté.

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 169
    Points
    17 169
    Par défaut
    Essais de monter ta boucle autrement, Sleep ne laisse rien faire au autre processus (ou si peu), d'ou des surprises possibles.
    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
    On Error GoTo Error_Handled
    'Set g_maLib = New MonEx.MaLib
    Dim FinCpt As Date
    'FinCpt = DateAdd("s", 5, CDbl(Time)) '5 Sc
    FinCpt = DateAdd("n", 5, CDbl(Time)) '5 Mn, je ne me suis pas trompé c'est bien "n" pour Minutes
    Do While g_maLib.IsConnected = False And FinCpt > Time
     g_maLib.Connect
     DoEvents
    Loop
        Debug.Print "sortie de la boucle sans gestion de l'Erreur"
    Exit Sub
     
    Error_Handled:
        'Debug.Print g_maLib.Status
        Debug.Print "Gestion de l'Erreur"
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Liaison avec une bibliothèque externe
    Par gpcbitnik38 dans le forum Qt Creator
    Réponses: 2
    Dernier message: 20/09/2014, 16h28
  2. Réponses: 4
    Dernier message: 21/05/2014, 11h13
  3. Création d'un makefile avec une librairie externe
    Par sisi_06 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/05/2014, 17h09
  4. Créer un apk avec une librairie externe
    Par kapur1000 dans le forum Android
    Réponses: 5
    Dernier message: 20/05/2013, 18h33
  5. liaison avec une application externe.
    Par adicor dans le forum MFC
    Réponses: 8
    Dernier message: 05/05/2006, 14h32

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