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

C++Builder Discussion :

[débutant] thread et TMediaPlayer


Sujet :

C++Builder

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut [débutant] thread et TMediaPlayer
    J'ai créé une boucle qui lit une playlist grace à un Tmediaplayer et je l'ai placé dans un thread.

    Le problème est que je ne peux pas ni stopper ni la mettre et la reprendre.
    J'ai essayé Suspend(), Resume(), Terminate() et cela n'a aucun effet sur le thread.
    Mon code pour le thread :
    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
    void __fastcall TMonThread::Execute()
    {
            SetName();
     
        for(int i = 0; i < f_Main->listB->Items->Count; i++)
        {
          f_Main->media->FileName = f_Main->listB->Items->Strings[i];// listB est une listbox qui contient ma playlist
     
          f_Main->media->Open();
          try
          {
            f_Main->media->Wait = true;
            f_Main->media->Play(); 
          }
          __finally
          {
            f_Main->media->Close();
          }
        }
    Pour tenter d'arrêter le thread je fais depuis ma form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonThread->Terminate();
    N'étant que débutant surtout en matière de thread je ne serais pas étonné d'avoir oublié l'essentiel.

  2. #2
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    reBonjour,

    essayes de faire comme ceci:
    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
     
    void __fastcall TMonThread::Execute() 
    { 
    while(!Terminated)
    {
        SetName(); 
     
        for(int i = 0; i < f_Main->listB->Items->Count; i++) 
        { 
          f_Main->media->FileName = f_Main->listB->Items->Strings[i];// listB est une listbox qui contient ma playlist 
     
          f_Main->media->Open(); 
          try 
          { 
            f_Main->media->Wait = true; 
            f_Main->media->Play(); 
          } 
          __finally 
          { 
            f_Main->media->Close(); 
          } 
        }
       Suspend();
    }
    }
    Ceci a pour but de faire tourner le thread indéfiniment, jusqu'à ce que tu l'arrêtes avec un Terminate().

    NB: je ne suis pas sûr que t'aies besoin du media->Close(); (moi je ne l'utilise pas et ça marche bien chez moi).

    NB2: Par rapport à ton post précédent, je pourrais t'envoyer mon appli par mail. Si tu veux tu me donnes ton adresse par mp.

    Bon courage

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Je sias pas si tu le sais mais avec les thread tu peux envoyer que un paramètre au thread par conséquent si tu veux utiliser différentes variables ds ton theard tu dois utiliser une structure qui va contenir tous les paramètres dont tu as besoin et bien entendu cette structure tu la met en paramètre de ton thread.
    J'espère que ça pour t'aider.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    j'avais oublier voici des liens qui devrai d'aider :
    http://chgi.developpez.com/thread/
    http://glouise.developpez.com/WaveBCB6/
    http://lfe.developpez.com/FMODMP3/ celle la est bien pratique !!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Je vais me pencher sur tous ça mais Neo41 j'ai l'impression que ton code me permet de jouer une playlist en boucle et de l'arrêter manuellement au moment la boucle se réitère. Alors que moi je voudrais que ma playlist se joue une fois mais que je puisse la stopper quand je veux.

    J'essaie et je vous tiens au courant.

    Merci

  6. #6
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Citation Envoyé par Tymk
    Je vais me pencher sur tous ça mais Neo41 j'ai l'impression que ton code me permet de jouer une playlist en boucle et de l'arrêter manuellement au moment la boucle se réitère. Alors que moi je voudrais que ma playlist se joue une fois mais que je puisse la stopper quand je veux.

    J'essaie et je vous tiens au courant.

    Merci
    Dans ce cas là tu peux rajouter un test dans ta boucle for (un booléen par exemple) que tu viens le tester au début de chaque itération. Si ce booléen est true alors tu fais un break (pour sortir de la boucle for) et tu le réinitialises à false.

    Par contre je ne sais pas si tu peux interrompre un fichier qui est entrain d'être joué (càd une fois le play exécuté).

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

Discussions similaires

  1. [Débutant] Threads boucle for
    Par stoukou dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 24/01/2011, 09h47
  2. [Débutant] Thread non bloquant
    Par GoustiFruit dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2007, 17h08
  3. [Débutant]Thread Tomcat journalier pb de sleep
    Par mediateur59 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/11/2006, 11h39
  4. [Débutant][Thread] Comment lancer en boucle un affichage
    Par comme de bien entendu dans le forum Général Java
    Réponses: 6
    Dernier message: 03/02/2006, 10h20
  5. [Débutant] [Thread] Faire patienter un programme java....
    Par yoxx dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 25/09/2005, 12h36

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