Как изменить TextBlock.Text каждый цикл? - PullRequest
0 голосов
/ 08 ноября 2018

Это приложение UWP C #. Я хочу отобразить переменную i .

    private void btn2_Click(object sender, RoutedEventArgs e)
    {
        for(int i = 0; i<=10000000; i++)
        {
            textBlock2.Text = i.ToString();
        }
    }

Но после того, как я нажал кнопку, текст меняется только один раз после завершения цикла.
Как увидеть изменение текста в каждом цикле?

1 Ответ

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

На самом деле ваш пользовательский интерфейс заморожен во время выполнения длинного цикла, поэтому на экране ничего не может быть обновлено. Попробуйте это

private async void btn2_Click(object sender, RoutedEventArgs e)
{
    for(int i = 0; i<=10000000; i++)
    {
        textBlock2.Text = i.ToString();
        await Task.Delay(200); //stay 200 ms before showing next number so human eyes can see it.
    }
}

При выполнении этой строки await Task.Delay(200); цикл временно приостанавливается - на 200 миллисекунд, и поток пользовательского интерфейса теперь имеет возможность обрабатывать задачи рисования, ожидающие в очереди, что включает перерисовку текстового блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...