C# Вывод элемента списка с задержкой таймера

Я пытаюсь в Label вывести словарь, в котором ключ- то, что надо вывести, а значение - задержка таймера. У меня получилось добиться желаемого результата через async метод и строки в цикле await Task.Delay(el.Value);, но он неправильно работает, если на кнопку нажать несколько раз, поэтому я переписываю метод, используя Timer WinForms. В timer_tick методе я уже пытался хоть что-то вывести, но у меня не получается добиться того же результата, как с асинхронным методом

private void button2_Click(object sender, EventArgs e)
        {
            label1.Text = "";
            timer1.Start();

            var chosen_action = ac.actions[comboBox1.SelectedItem + ""];
            foreach (var el in chosen_action)
            {
                label1.Text += $"{el.Key} ";
                //await Task.Delay(el.Value);
                // Для обновления интервала таймера
                timer1.Stop();
                timer1.Interval = el.Value;
                timer1.Start();
            }
            //timer1.Stop();

                //timer1.
                //timer.Interval = el.Value;
                //timer.AutoReset = false;
                //timer.Elapsed += Timer_Elapsed;
                //timer.Start();


        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //label1.Text += "# ";
            
            //var chosen_action = ac.actions[comboBox1.SelectedItem + ""];
            //foreach (var el in chosen_action)
            //{
            //    label1.Text += $"{el.Key} ";

            //    //timer1.Stop();
            //    timer1.Interval = el.Value;
            //    //timer1.Start();
            //}
            //timer1.Stop();
        }
    }

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

Автор решения: Виктор

Используйте такой приём:

private void button2_Click(object sender, EventArgs e)
{
    button2.Enabled = false; // Не даём нажимать кнопку, пока не отработали
    ...
    button2.Enabled = true;
}

Более общее решение:

Button btn = (Button)sender;
btn.Enabled = true;
→ Ссылка