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));  //循環結束后,使用委托關閉該窗體
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM