Проблемы с отображением объектов

Существует две задачи: первая - это обновление прогресса в объекте ProgressBar, а вторая - отображение некоторого текста. ProgressBar должен доходить до конкретной отметки, например 70% (100% максимум). После чего, должен отображаться текст. Были предприняты попытки реализовать выполнение задачи с этими двумя подзадачами в виде следующего метода:

    public void UpdateSomeTextAndProgressBar(double progress)
    {
        Task t1 = new Task(() => SomeProgressBar.SetProgress(progress, 5000, Easing.CubicOut));
        t1.Start();
        Task.Delay(5000);
        if (SomeProgressBar.Progress == progress)
        {
            PrintSomeText(progress);
        }
    }

Но при выполнении происходит следующее: начинает заполнение ProgressBar и тут же отображается текст. Будто бы эти две задачи выполняются одновременно. Что следует предпринять?


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

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

Task.Delay() - асинхронный метод, и если его не ожидать с помощью await - он не будет работать.

Попробуйте вот так.

public async Task UpdateSomeTextAndProgressBar(double progress)
{
    Task.Run(() => SomeProgressBar.SetProgress(progress, 5000, Easing.CubicOut));
    await Task.Delay(5000);
    if (SomeProgressBar.Progress == progress)
    {
        PrintSomeText(progress);
    }
}
→ Ссылка