WPF-изображения обновляются только после окончания времени - PullRequest
0 голосов
/ 03 ноября 2018

Моя программа должна показывать некоторый текст в течение x секунд. Проблема в том, что текст появляется только после проверки временного интервала. Вот мой код:

        // Clicks button to show texts

        //Displays text wanted basicly Text.Visibility =Visibility.Visible;
        DisplayWords();

        //Waits x amount of seconds before hidden them
        int nbOfSecondsToWait = Convert.ToInt32(SecondAffichage.Value);
        DateTime timeNow;
        timeNow = DateTime.Now;
        TimeSpan timePassed = (DateTime.Now - timeNow);
        TimeSpan timePassedWanted = new TimeSpan(0, 0, nbOfSecondsToWait);
        while (timePassed < timePassedWanted)
        {
            timePassed = DateTime.Now - timeNow;

        }

        //Hide texts

Мой текст появляется только после проверки времени и сразу же скрывается

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Используйте Task.Delay в асинхронном методе:

public async Task ShowText()
{
    DisplayWords();

    int nbOfSecondsToWait = Convert.ToInt32(SecondAffichage.Value);

    await Task.Delay(TimeSpan.FromSeconds(nbOfSecondsToWait));

    //Hide texts
}
0 голосов
/ 03 ноября 2018

Он не отображается, потому что ваш код находится в жестком цикле, и вы не предоставляете пользовательскому интерфейсу время для обработки изменений, внесенных в ваш метод DisplayWords(). Если вы ставите Application.DoEvents(); сразу после DisplayWords();, это должно дать ОС время для обновления пользовательского интерфейса.

Вы также можете сделать это вместо:

// Clicks button to show texts

//Displays text wanted basicly Text.Visibility =Visibility.Visible;
DisplayWords();
Application.DoEvents();

//Waits x amount of seconds before hidden them
System.Threading.Thread.Sleep(nbOfSecondsToWait * 1000);

//Hide texts
...