C#子线程刷新界面并关闭窗体

目的:要循环刷新界面上的控件,同时不影响用户操作。循环结束后关闭窗体。

步骤:先创建一个窗体,窗体中拖入一个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));  //循环结束后,使用委托关闭该窗体

        }

 

你可能感兴趣的:(C#)