поэтому, когда я пытаюсь нажать «кнопка 2», я ожидаю, что произойдут две вещи: а) «dowsomething» - это сделать свою вещь в классе «сейчас». б) Пока он что-то делает, я хочу, чтобы он подсчитал, сколько времени это займет. Однако, поскольку «dosomething» является программой голодной, Form1 зависает, и он не запускает таймер. Я немного новичок в C#, поэтому я не знаю, как запустить его в фоновом режиме. Так что любые идеи вне коробки? Благодарю.C# Таймер не спустится, чтобы сформировать замораживание
int time = 0;
private void button2_Click(object sender, EventArgs e)
{
timer1.Start();
nowthen now = new nowthen();
now.dosomething(withthis); //This task is program hungry and causes the form to freeze
timer1.Stop();
time = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
time = time + 1;
label2.Text = time.ToString();
label2.Refresh();
}
Рекомендуемое чтение: [Фоновые рабочие темы] (http://www.albahari.com/threading/part3.aspx # _BackgroundWorker) –
Вы делаете это неправильно в целом. Пойдите, прочитайте о очереди сообщений Windows, а затем выполните много времени в другом потоке, чтобы пользовательский интерфейс мог оставаться отзывчивым. –