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

Langage Delphi Discussion :

Assigner une forme a un thread


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Assigner une forme a un thread
    Salut, j'aimerais savoir s'il est possible d'assigner une forme à un thread en fait je voudrais avoir pour chaque thread qui se lance une Form et lorsque je clik sur un bouton de ce thread je puiss arreter le thread mais egalement sa form .
    J'ai essayé de lui attribuer comme propriéte la form mais a chaque fois j'ai plusieurs Violation d'acces que je n'arrive pas à resoudre?

    Merci pour votre aide

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Normalement, c'est possible.
    Tu es sûr que tu créés bien chaque form ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Oui normalement j'ai suivi l'exemple sur le tutorial
    http://lberne.developpez.com/delphi/...us_threads.pdf
    sauf que ma form a en plus un bouton du coup lorsque j'apel mon thread ca donne :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Monprocess := TMonThread.Create(true);
                  Monprocess.formPrincipale := self;
                  ChangeControlScale(Monprocess.formprogress);
                  Monprocess.formprogress.spSkinGroupBox1.Caption := Format(sTache, [TacheActive.Nom]);
                  Monprocess.UpdateProgress;
                  Monprocess.Resume;

    Mais à l'execution quand j'execute et que je clik sur arreter (bouton de ma formprogress) ca me fait une violation d'acces

  4. #4
    Teo
    Teo est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Tu es sur que le click ne genere pas la manipulation d'une resource
    utilisé par le thread ?
    La manipulation des resources partagées via le thread
    doit etre protégées c'est le cas ?

    Un bout de ton code clik (arret FormProgress)
    et Execute du thread

  5. #5
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Lorsque tu accèdes à ta fenêtre depuis le thread, il faut faire un appel synchronisé, par exemple :

    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
    20
    21
    22
    23
    24
    25
    type
      TMonThread = class(TThread)
      private
        f : TForm1;
        procedure majLabel;
      protected
        procedure Execute; override;
      end;
     
     
    { TMonThread }
     
    procedure TMonThread.Execute;
    begin
      while (not terminated) do
      begin
        synchronize(majLabel);
        sleep(500);
      end;
    end;
     
    procedure TMonThread.majLabel;
    begin
      f.label1.Caption := dateTimeToStr(now);
    end;
    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    En fait, pour arreter ma tache et mon thread en même temps (ce qui se passe dans le bouton Stop)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try
    if thread <> nil then
     begin
       TMonprocess(thread).HaltExecution;
     end;
    except
    Mais la violation d'acces me parait bizarre parce qu'elle ne se fait pas sur un evenement qui survient sur l'application, mais un evenement fait sur Windows(style sur un dossier ou sur mon bureau).
    Y'aurait il un moyen de vider la pile des messages qu'une form peut recevoir.
    Peut être que ma violation d'acces est du à un message envoyer par windows à mon application.
    Donc je souhaiterais pour tester purger les messages ou lancer les messages de maniere prémature

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/04/2015, 23h51
  2. lancement d'une form en multi-thread
    Par skerdreux dans le forum C++/CLI
    Réponses: 2
    Dernier message: 29/05/2009, 10h47
  3. Création d'une Form dans un thread (form dynamique)
    Par franco263 dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/06/2007, 17h33
  4. [VB6] Assigner une action à une région de la Form
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/05/2006, 11h51
  5. [VS 2003][dessin] synchronizer un thread avec une forme
    Par Harry_polin dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/10/2005, 10h31

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