Изменить текст метки во время выполнения в wpf C # - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть один ярлык с именем lblMsg.

Я хочу динамически изменять время выполнения контента.

Ниже приведен пример моего кода, а не фактический код.Мой цикл for содержит так много кода, и на каждый цикл уходит примерно 8-9 секунд.Так что это должно быть видно в пользовательском интерфейсе.

Например.

for(int i=0;i<=length;i++)
{
    lblMsg.Content="Test"+i;
}

Но это не работает.Может ли кто-нибудь помочь мне с этим?

1 Ответ

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

Если вы просто хотите отобразить метку с возрастающим номером, вы можете создать задачу, а затем использовать задержку (Thread.Sleep ()), чтобы дать пользовательскому интерфейсу время для обновления метки.

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

Пример кода

var length = 1000;

Task.Run(() =>
{
    for (int i = 0; i <= length; i++)
    {
        Application.Current.Dispatcher.BeginInvoke(new Action(() => { 
            lblMsg.Content = "Test" + i;
        }), DispatcherPriority.Render);
        Thread.Sleep(100);
    }
});
...