目的:要循環刷新界面上的控件,同時不影響用戶操作。循環結束后關閉窗體。
步驟:先創建一個窗體,窗體中拖入一個lable控件(label1),一個button控件(button1)
代碼窗口輸入:
/// <summary> /// 開始按鈕單擊事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { ThreadStart start = new ThreadStart(ShowTime); Thread t1 = new Thread(start); //創建子線程,循環刷新label1 t1.Start(); //線程開始 } /// <summary> /// 刷新label1 /// </summary> private void label1ShowTime() { if (label1.InvokeRequired) //判斷當前線程是否和控件所屬線程為同一線程 { label1.Invoke(new Action(label1ShowTime)); //不為同一線程,則使用委托執行該方法本身 } else { label1.Text = DateTime.Now.ToLongTimeString(); //為同一線程則直接刷新label1 } } /// <summary> /// 子線程執行的方法,循環5次刷新窗體的label1 /// </summary> protected void ShowTime() { for (int i = 0; i < 5; i++) //循環刷新界面中的時間 { Thread.Sleep(1000); label1ShowTime(); } this.Invoke(new Action(this.Close)); //循環結束后,使用委托關閉該窗體 }