Warteschleife, Timer



  • Hallo,

    ich danke erstmal allen die mir immer weiter helfen.
    Ich bin nun an meiner letzten Hürde.

    Mein Programm spielt nun einen Film über den Movieplayer ab, und nach x Zeit soll der Stream gestoppt werden.

    Ich dachte eigentlich ich kann den Film starten lassen und dahinter eifnach ein Sleep setzen und nach der Zeit würde ich dann den film stoppen lassen.

    Leider wartet c++ erst die x sec sofort ab und stopped dann, der fil läuft also nicht.

    Nun brauche ich wohl irgendwo einen globalen Timer oder sowas damit dort die Sekunden gezählt werden und dann wenn x = x ist der Film pausiert wird.

    so würde ich tippen.

    Meine Frage wie lege ich eine solche Funktion an ?

    Hoffe ihr könnt mir wieder helfen.

    Danke euch



  • kleines Update,

    habe mit Treads angefangen. Ich denke so muss man das auch machen.

    Jetzt habe ich nur ein neues Problem.

    Dieser Thread kann nicht auf meine Button etc von meiner Form1 zugreifen ??

    Fehler 3 error C2227: Links von "->play" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. c:\users\caosmen\documents\visual studio 2008\projects\elena player\elena player\Form1.h 29
    Fehler 2 error C2227: Links von "->Ctlcontrols" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. c:\users\caosmen\documents\visual studio 2008\projects\elena player\elena player\Form1.h 29
    Fehler 1 error C2065: 'axWindowsMediaPlayer1': nichtdeklarierter Bezeichner c:\users\caosmen\documents\visual studio 2008\projects\elena player\elena player\Form1.h 29

    Mein Thread klappt: Ohne axWindowsMediaPlayer1->Ctlcontrols->play();

    wird mir nach 5 sek dann mein Hello ausgegeben.

    Mein letztes Problem nun wie kann ich nun ein Event auf meinen Movieplayer ausüben über diesen Thread ??

    [cli]// Thread Anfang
    void funk()

    {
    Thread::Sleep(5000);
    MessageBox::Show("Hello!");

    }

    // Thread Ende[cpp]

    Danke



  • Du musst ein Control.Invoke() ausführen um auf GUI Elemente zuzugreifen.

    http://www.mycsharp.de/wbb2/thread.php?threadid=33113

    Das ist zwar ein C# Artikel, sollte aber mit ein wenig mühe übertragbar sein.



  • HI,

    habe das mal so umgeschrieben was ich zeigen kann, wird für meiner Masterarbeit darum hier nur mein Problem im Code dargestellt.

    klappt auch alles

    Thread^ threadfunk =gcnew Thread( gcnew ThreadStart(this,&Form1::funk));
    threadfunk->Start();
    
    wichtig sind diese deklarirungen von dem Thread.
    
    und die funk dazu
    
    void funk()
    
    	{
    
    		while (axWindowsMediaPlayer1->Ctlcontrols->currentPosition <5 )
    
    		{
    			Sleep(500);
    		}
    
    			axWindowsMediaPlayer1->Ctlcontrols->pause();
    	}
    

    klappt nun alles.

    der falsche parameter im Thread war der Fehler


Anmelden zum Antworten