
bool isRunning = true;//用来改变计时状态 Thread td; private void Form1_Load(object sender, EventArgs e) { btnEnd.Enabled = false; } #region 计时 void TimeTask() { try { double timeCal = 0; while (isRunning) { Thread.Sleep(1000);//休眠1000毫秒 timeCal++; this.label1.BeginInvoke((EventHandler)(delegate { this.label1.Text = TimeSpan.FromSeconds(timeCal).ToString(@"hh\:mm\:ss"); //这里是关键 })); //这里可以放其它方法 即循环一次执行一次 } } catch (Exception ex) { } } #endregion private void btnStart_Click(object sender, EventArgs e) { btnStart.Enabled = false; btnEnd.Enabled = true; isRunning = true;//控制计时 td = new Thread(TimeTask);//开新的线程 td.IsBackground = true; if (!td.IsAlive)//线程运行状态 { td.Start(); } } private void btnEnd_Click(object sender, EventArgs e) { td.Abort(); btnStart.Enabled = true; btnEnd.Enabled = false; isRunning = false; }