Funktion dauerhaft überprüfen.



  • Hi @all,

    folgendes Prob:

    Mein Programm führt einen Stream aus. Es sendet in einer Tour zu einem Media Server. In meiner Funktion Control() möchte ich feststellen, ob der Stream unterbrochen wurde.

    void CHauptDlg::Control()
    {
    	hr = 0;
    	do
    	{
    		if ( SUCCEEDED( hr ) )
    		{
    			hr = pEncoder->PrepareToEncode(VARIANT_TRUE);
    		}
    	}while(hr == 0);
    
    	ShowWindow(SW_SHOW);
    	// Stream stoppen
    	OnStop();
    }
    

    Bei der Ausführung bleibt es in der while-Schleife hängen, also wird PrepareToEncode falsch sein. Weiß irgendwer, mit welcher Funktion des Encoders man feststellen kann, ob ein Stream noch gesendet wird?



  • Habe meine Funktion mal etwas umschrieben. Es soll noch immer geprüft werden ob der gestartete Stream zum Windows Media Server noch läuft.

    void CHauptDlg::Control()
    {
    	hr = 0;
    	WMENC_ENCODER_STATE enumEncoderState;
    	do
    	{	// Prüfen ob Encoder noch sendet
    		Sleep(1000);
    		if ( SUCCEEDED( hr ) )
    		{
    			hr = pEncoder->get_RunState(&enumEncoderState);
    		}
    	}while(enumEncoderState == WMENC_ENCODER_RUNNING);
    
    	ShowWindow(SW_RESTORE);
    	// Stream stoppen
    	OnStop();
    }
    

    Zur Erklärung: die Funktion get_Runstate(&enumEncoderState) gibt hr den Wert 0.
    Soll heißen, alles in Ordnung. In enumEncoderState steht entweder WMENC_ENCODER_RUNNING (also Stream läuft) oder WMENC_ENCODER_STOP (Stream läuft nicht). Das ganze wird in der do-while-Schleife 1 mal die Sekunde abgefragt.
    Sobald das Programm in diese Funktion reingeht, reagiert es nicht mehr. Kann es daran liegen, das er aus der while-Schleife nicht rauskommt? Aber das soll das Programm ja eigentlich auch nicht. Das soll nur passieren, wenn der Stream beendet wird.
    Wie prüft man so eine Funktion?
    😡 😮
    Brauche dringend hilfe!



  • Zusatz:

    Ich will mich übrigens nicht auf diese Funktion festlegen. Wenn jemand weiß, wie man sonst prüfen kann, ob ein stream über die Netzwerkkarte gesendet wird, immer her damit. :p


Anmelden zum Antworten