Проблемы с отображением объектов
Существует две задачи: первая - это обновление прогресса в объекте 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);
}
}