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 :

[VB6][active x] faire du multi-thread avec vb


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [VB6][active x] faire du multi-thread avec vb
    Voila la semaine derniere j'avais pose une question sur comment faire une application qui tourne en arriere plan .

    Voici un debut de solution pour ceux que ca pourrait interesser

    il faut creer un activeX avec une frame qui contient un Timer et la fonction que vous voulez faire tourner en arriere plan.

    quand vous lancer votre active x a partir du programme principale celui-ci
    se lance dans le meme thread puis lance le timer et la, il rend "la main" au programme principale . quand le timer tic pour la premiere fois il lance la fonction qui du coup s'execute dans le meme thread que le timer et pas celui-du prog principale

    Voila maintenant que ca marche bien j'aimerais bien que une fois la fonction finie celle ci previenne le programme principale quelle a fini
    mais je ne sais pas comment faire
    si quelqu'un a une idee ????

    a+

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut Re: [active x] faire du multi-thread avec vb
    Citation Envoyé par pecheur
    quand vous lancer votre active x a partir du programme principale celui-ci se lance dans le meme thread puis lance le timer et la, il rend "la main" au programme principale . quand le timer tic pour la premiere fois il lance la fonction qui du coup s'execute dans le meme thread que le timer et pas celui-du prog principale
    C'est un petit peu confus : l'activeX se lance dans le même thread ou pas ?

    J'ai pas bien compris, il est sous quelle forme ton activeX, c'est un ocx ?

  3. #3
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    Tu peux déclencher en évenement à la fin.

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Re: [active x] faire du multi-thread avec vb
    c'est vrai c'est un peu confu
    je vais essayer d'etre un peu plus clair (si j'y arrive )

    tout d abord mon activeX un activeX.exe non pas un ocx

    Quand ton programme principale lance un activeX. ce creer alors un nouveau thread dans lequel s'execute ton activeX cependant si tu effectu le traitement directement dans ton activeX le programme principale va attendre que ce traitement soit fini pour reprendre la main (la je ne sais pas pourquoi ca fais ca ?)
    D'ou un timer pour declancher le traitement plus tard
    comme ca quand tu lance ton activeX il ne fais rien dans un premier temps donc il rend la main a ton programme principale directement et ainsi le
    deux threads sont vraiment totalement independants

    je ne pense pas que se soit la solution la plus simple, si quelqu'un a quelque chose de mieux a me proposer ca m'interesse

    a+

  5. #5
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    Deux thread oui mais dans le même processus, celui de ton appli, c'est mieux qu'un seul c'est sur.
    Et pour ce qui est du programme principal qui attend pendant l'execution de l'activeX, c normal, à moins que tu ais plusieurs processeurs ...

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par ZuZu
    Deux thread oui mais dans le même processus, celui de ton appli, c'est mieux qu'un seul c'est sur.
    Un activeX Exe a son propre processus, en fait.

    Tu le fais dans quelle partie de l'activeX, ton traitement, pecheur ? Dans la sub main, dans une form ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut re activeX
    J'effectu mon traitement dans une form celle ou ce trouve le timer

    mon active est composer d'une classe avec juste un attribut et une fonction start() qui load la form; puis la form lance le traitment...

    quand le traitement est fini j'aimerai "prevenir" ma classe ou le programme principale de la fin...pour le moment je n'ais pas encore trouver

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut c'est bon j'ais trouver
    en fait la reponse a mon petit probleme se trouve sur le forum
    comme la plus part du temps
    (la reponse vient de toi d'ailleurs nightfall)

    http://www.developpez.net/forums/vie...ighlight=event

    en utilisant les event withevent et raiseevent

    voila merci a vous pour m'avoir eclairer sur ses histoires de processus et de thread avec VB

    a+

  9. #9
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut
    [Edit] J'avais pas vu ton post

    Zut, je me suis mal exprimé. Je voulais dire avant que tu n'utilises un timer. Ce que je voulais comprendre c'est pourquoi tu utilises un timer.

    D'ou un timer pour declancher le traitement plus tard
    comme ca quand tu lance ton activeX il ne fais rien dans un premier temps
    Si tu mets ton traitement dans une classe, et ton traitement dans une méthode de la classe : dans l'exe standard tu instancies la classe, et tu lances le traitement quand tu veux en appelant la méthode.

    Pour avertir qu'il a fini, tu peux mettre un évènement dans la classe que tu lèves avec RaiseEvent et dans l'exe standard tu reçois l'évènement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim WithEvents traitement as clsTraitement
     
    Private Sub traitement_Fini()
    ...
    End Sub
    Sinon, moins propre : tu as un objet public dans la classe du traitement qui représente l'objet appelant. L'objet appelant contient la procédure qui fait ce qu'il faut quand le traitement est fini.

    Dans l'exe standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim traitement as clsTraitement
     
    set traitement = new clsTraitement
    set traitement.objetAppelant = Me
     
    Public Sub Fini()
    ...
    End Sub
    Et dans la classe de l'activeX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    on error resume next
    if objetAppelant not is nothing then
      objetAppelant.Fini()
    end if

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut ok j'avais pas pense a ca
    pas con du tout
    bon en fait je t'explique le pourquoi du timer
    d'abord j'avais lu un post de je sais plis qui sue le forum qui disait qu'il fallait utiliser un activeX

    du coup j'ais creer un activeX en lancant le traitement dans le Class_Initialize()

    ca marcher pas comme je voulais... la quelqu'un me dis utilise un timer...
    du coup j'ais creer une form avec un timer...

    mais je vais refaire le truc avec ta solution ca me parait beaucoup plus propre

    pour ce qui est des withevent ... et tout j'ais utiliser la reponse que t'avait file a cpri1shoot pour kles fenetre midi...

    pour les conseils ...

    a+

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

Discussions similaires

  1. faire des Multi-threads ?
    Par AddicTion dans le forum Débuter
    Réponses: 1
    Dernier message: 17/05/2010, 09h52
  2. [AC-2003] Multi-Threading avec une bibiothèque externe
    Par Lorito dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/05/2010, 11h23
  3. Multi-threading avec Graphics
    Par sayag dans le forum C#
    Réponses: 4
    Dernier message: 15/06/2007, 10h28
  4. Comment faire du multi thread en php?
    Par sirbaldur dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/01/2007, 17h56
  5. Réponses: 1
    Dernier message: 17/11/2006, 23h21

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