Работа с таймером C# (WinForms)
Алексей Горелик

Добрый день.

Есть задача: проверить введенное пользователем число на простоту (является оно простым или составным, алгоритм проверки значения не имеет). Пользователь вводит число в textBox и нажимает кнопку "Проверить". Во второй textBox выводится результат проверки: простое число или составное, а также затраченное на проверку время (формат не важен).
Проблема следующая: после включения таймера, пока работает цикл проверки, не вызывается событие timer1_Tick().

Пробовал ставить разный интервал таймера (от 1 до 1000). Проверял большие числа (1125899839733759 и т.д.), т.е. проблема не в том, что проверка идет быстрее чем "Тик" таймера.
Мне кажется, что решение довольно простое, но не могу его найти.
Заранее спасибо за помощь.

Код программы:
```
//Проверяемое число
Int64 x = 0;

//Переменная для таймера
int secondsCounter = 0;

private void buttonCheck_Click(object sender, EventArgs e)
{
x = Convert.ToInt64(textBoxInput.Text);
secondsCounter = 0;
textBoxOutput.Text = "";

    int i; //Счетчик цикла

    textBoxOutput.Text += "Начало проверки..." + Environment.NewLine;

    timer1.Start();                      //Запустили таймер

    for (i = 2; i <= Math.Sqrt(x); i++)
    {
            if (x % i == 0)
            {
                    timer1.Stop();                     //Останавливаем таймер

                    textBoxOutput.Text += "Проверка завершена." + Environment.NewLine;
                    textBoxOutput.Text += "Число не является простым." + Environment.NewLine;
                    textBoxOutput.Text += "Затраченное на проверку время: " + Convert.ToString(secondsCounter) + " секунд.";

                    return;
            }
    }
    timer1.Stop();               //Останавливаем таймер
    textBoxOutput.Text += "Проверка завершена." + Environment.NewLine;
    textBoxOutput.Text += "Число является простым." + Environment.NewLine;
    textBoxOutput.Text += "Затраченное на проверку время: " + Convert.ToString(secondsCounter) + " секунд.";

}

private void timer1_Tick(object sender, EventArgs e)
{
secondsCounter += 1;
}
```

1 чел.