Предположим, у вас есть кнопка в форме, которая считает в текстовом поле до 1000, а затем очищает ее.
Если я быстро нажму кнопку пять раз (во время выполнения), обработчик события Click будет вызван 5 раз, и я увижу счет до 1000 пять раз.
Можно ли отключить другие нажатия на эту кнопку, пока считается первый щелчок?
Примечание. Отключение кнопки в первом операторе обработчика щелчка, а затем повторное включение в конце не работает. Кроме того, отмена подписки / подписки на событие click (после - = = и + =) не работает.
Вот пример для иллюстрации:
private bool runningExclusiveProcess = false;
private void button1_Click(object sender, EventArgs e)
{
this.button1.Click -= new System.EventHandler(this.button1_Click);
if (!runningExclusiveProcess)
{
runningExclusiveProcess = true;
button1.Enabled = false;
textBox1.Clear();
for (int i = 0; i < 1000; i++)
{
textBox1.AppendText(i + Environment.NewLine);
}
runningExclusiveProcess = false;
button1.Enabled = true;
}
this.button1.Click += new System.EventHandler(this.button1_Click);
}