Как бесконечно выводить текст в TextBlock

Проблема заключается в том, что если просто использовать такой код:

while (true)
{
    TextStatus.Text += "Connect: Stable, Content: Actual...";
    Task.Delay(1000).Wait();
}

То window не открывается и ждет пока закончится цикл.

Если сделать код таким:

Task.Run(() =>
{
    while (true)
    {
        TextStatus.Text += "Connect: Stable, Content: Actual...";
        Task.Delay(1000).Wait();
    }
});

То программа падает в ошибку "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток".

А если сделать код таким:

Task.Run(() =>
{
    Dispatcher.Invoke(() =>
    {
        while (true)
        {
            TextStatus.Text += "Connect: Stable, Content: Actual...";
            Task.Delay(1000).Wait();
        }
    });
});

То window открывается и просто зависает ждет пока закончится цикл.

Я хочу ПРОСТО выводить информацию о состоянии каждый раз с новой строки каждую секунду. Есть ли какой-нибудь способ.


Ответы (1 шт):

Автор решения: aepot

А если сделать код таким, то всё будет работать без зависаний.

while (true)
{
    TextStatus.Text += "Connect: Stable, Content: Actual...";
    await Task.Delay(1000);
}

Документация: Асинхронное программирование с операторами async и await

→ Ссылка