Генерация числа с предварительной "анимацией"
мне нужно сделать генерацию числа с анимацией того, как число несколько секунд генерируется, и чтобы это все выводилось на экран.
Пробовал Thread.Sleep(), но программа просто зависает (логично); пробовал через асинхронный метод и внутри него Task.Delay() - вот такое поведение мне примерно и нужно, все генерируемые числа отображались на экране, но из-за асинхронности я не понимаю как мне контролировать весь последующий код, который не дожидается выполнения предыдущего.
Нужно, чтобы шла генерация и весь следующий код не выполнялся.
Вот как я пробовал:
int value1 = 0, value2 = 0;
for (int i = 0; i < 20; i++)
{
value1 = random.Next(1, 7);
value2 = random.Next(1, 7);
startingBucks1.Text = Convert.ToString(value1);
startingBucks2.Text = Convert.ToString(value2);
Thread.Sleep(100);
}
Ответы (1 шт):
Оказалось все просто. Сделал все таки используя асинхронность. Чтобы данный метод можно было использовать внутри другого с припиской await, он должен быть не void. Сделал возврат Task, и внутри метода, где я использую эту генерацию, нужно вызвать метод генерации с припиской await.
private async void buttonPlay_Click(object sender, EventArgs e)
{
infoPanel.Enabled = true;
buttonPlay.Visible = false;
await StartingBucksGeneration();
}
private async Task StartingBucksGeneration()
{
int value1 = 0, value2 = 0;
for (int i = 0; i < 20; i++)
{
value1 = random.Next(1, 7);
value2 = random.Next(1, 7);
startingBucks1.Text = Convert.ToString(value1);
startingBucks2.Text = Convert.ToString(value2);
await Task.Delay(100);
}
currentBucks[0] = value1;
currentBucks[1] = value2;
labelBucks1.Text = startingBucks1.Text;
labelBucks2.Text = startingBucks2.Text;
}