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; } } } }