none
DispatcherTimer funktioniert nicht mehr

    Frage

  • Hallo,

    ich habe momentan das Problem, das ein DispatcherTimer, der vorher funktioniert hat, nun nicht mehr funktioniert. Ich habe probiert alle Änderungen seitdem er noch untkioniert hat Rückgängig zu machen aber es hat nichts genützt. Vielleicht kann jemand anderes mir sagen ob irgendwo etwas den timer nutzlos macht. Hier der Code:

    void MainPage::StartTimerAndRegisterHandler() {
    	
    	timer->Interval = timeDelay;
    	timer->Start();
    	auto registrationtoken = timer->Tick += ref new EventHandler<Object^>(this, &MainPage::OnTick);
    }
    
    void LernApp::MainPage::updateTimerDelay()
    {
    	timer->Stop();
    	timer->Interval = timeDelay;
    	timer->Start();
    }
    
    void MainPage::OnTick(Object^ sender, Object^ e) {
    	SpeechSynthesizer ^synth = ref new SpeechSynthesizer();
    	
    	std::default_random_engine generator;
    	std::uniform_int_distribution<int> distribution(1, numOfCards);
    
    
    	String^ text = allCardText[distribution(generator)];
    
    	concurrency::task<SpeechSynthesisStream ^> speakTask = concurrency::create_task(synth->SynthesizeTextToStreamAsync(text));
    	speakTask.then([this, text](SpeechSynthesisStream ^speechStream)
    	{
    		this->media->SetSource(speechStream, speechStream->ContentType);
    		this->media->AutoPlay = true;
    		this->media->Play();
    	});
    	addCard(text);
    }

    timeDelay wird selbstverständlich wo anders definiert.

    Das event OnTick wird gar nicht erst ausgelöst.

    Mfg Mattis Brooker

    Dienstag, 6. März 2018 16:32

Antworten

  • Oh wie es weh tut. Der fehler lag nicht am Code sondern daran, dass ich wohl ausversehen irgendwann das ausführen der StartTimerAndRegisterHandler methode gelöscht hatte.

    Es tut mir leid ihre Zeit mit einem solchen blödem Fehler verschwendet zu haben.

    Mittwoch, 7. März 2018 15:34

Alle Antworten

  • Hallo Mattis,

    Hast Du den Timer und die Zeitverzögerung innerhalb der Methode StartTimerAndRegisterHandler deklariert? Kannst Du das folgende Code-Snippet ausprobieren:

    void MainPage::StartTimerAndRegisterHandler() {
        auto timer = ref new Windows::UI::Xaml::DispatcherTimer();
        TimeSpan timeDelay;   
        // Du kannst jeden Wert hinzufügen
        // , der für Deine Bedürfnisse geeignet ist
        timeDelay.Duration = 500; 
        timer->Interval = timeDelay;
        timer->Start();
        auto registrationtoken = timer->Tick += ref new EventHandler<Object^>(this,&MainPage::OnTick);
    }

    Weitere Informationen enthält folgender Thread:
    Dispatcher​Timer Class

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 7. März 2018 13:30
    Moderator
  • Oh wie es weh tut. Der fehler lag nicht am Code sondern daran, dass ich wohl ausversehen irgendwann das ausführen der StartTimerAndRegisterHandler methode gelöscht hatte.

    Es tut mir leid ihre Zeit mit einem solchen blödem Fehler verschwendet zu haben.

    Mittwoch, 7. März 2018 15:34