目的:要循环刷新界面上的控件,同时不影响用户操作。循环结束后关闭窗体。
步骤:先创建一个窗体,窗体中拖入一个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)); //循环结束后,使用委托关闭该窗体 }