0

Есть форма, в которой при выборе опред. radiobutton и нажатия кнопки "начало" открывается новая форма. В зависимости от radiobutton на форме должны появляться с определенным интервалом элементы list1 и list2 в лейблах.

switch (main.passingText)
{
    case "Цвета":

        for (int i = 0; i < main.list1.Count; i++)
        {
            label_word.Text = main.list1[i];

            for (int j = 0; j < main.list2.Count; j++)
            {
                label_transl.Text = main.list2[j];
                Thread.Sleep((main.passText_forTime));

            }
        }

2 Answers2

2

Как уже сказали в комментариях, используйте async/await.

Замените строку

Thread.Sleep((main.passText_forTime));

на строку

await Task.Delay(main.passText_forTime);

При этом добавьте ключевое слово async к сигнатуре метода.

1

Используйте async/await конструкцию:

Замените все Thread.Sleep(); на await Task.Delay(). Не забудьте указать async методу. Познакомиться поближе.

При апдейте UI контролов вам следует переходить в UI поток:

Invoke(() => label_transl.Text = main.list2[j]);

Подробнее про Control.Invoke().

MihailPw
  • 6,384