Существует поток, называемый потоком пользовательского интерфейса, который отвечает за обновление графического интерфейса.При нажатии кнопки это событие запускается в потоке пользовательского интерфейса.Таким образом, ваша Start
функция также работает в потоке пользовательского интерфейса.Поток пользовательского интерфейса занят выполнением функции Start
, поэтому у него нет возможности обновить текстовое поле до завершения функции Start
.После завершения функции Start
поток пользовательского интерфейса обновляет текстовое поле до последнего значения.
Вам нужно запустить функцию Start
в другом потоке, поэтому поток пользовательского интерфейса может свободно обновлять текстовое поле.,Есть несколько способов сделать это.Вот один пример:
private System.Windows.Forms.Timer _timer;
private int _timer_i;
public Form1()
{
InitializeComponent();
_timer = new System.Windows.Forms.Timer()
{
Enabled = false,
Interval = 200
};
_timer.Tick += _timer_Tick;
}
private void _timer_Tick(object sender, EventArgs e)
{
textBox1.Text = _timer_i.ToString();
_timer_i++;
if (_timer_i >= 10)
{
_timer.Stop();
}
}
private void button1_Click(object sender, EventArgs e)
{
_timer.Stop();
_timer_i = 0;
_timer.Start();
}