using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; ThreadStart childref = new ThreadStart(CallToChildThread); Thread childThread = new Thread(childref); childThread.Start(); } public void CallToChildThread() { while (true) { Console.WriteLine("子线程开始"); // 线程暂停 3000 毫秒 int sleepfor = 1000; Console.WriteLine("子线程等待 {0} 秒", sleepfor / 1000); Thread.Sleep(sleepfor); SetText("我是子线程:" + DateTime.Now.ToString()); } } private delegate void SetTextCallback(string text); /// <summary> /// 给label赋值 /// </summary> /// <param name="text"></param> private void SetText(string text) { // InvokeRequired需要比较调用线程ID和创建线程ID // 如果它们不相同则返回true if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { this.label1.Text = text; } } private void timer1_Tick(object sender, EventArgs e) { if (progressBar1.Value<progressBar1.Maximum) { progressBar1.Value++; } else { timer1.Enabled = false; } } } }