在C#線程中的使用匿名方法

        用線程寫一個簡單的DEMO:在一個WinForm中放一個命名爲lblNumber的Label控件,每隔一秒刷新一下Label的Text,讓它顯示當前的秒數,從0顯示到99。c#

       若是用Timer那麼拖來兩個控件,敲幾行代碼,2分鐘搞定。這裏主要是作Demo說明匿名方法的用法,所以稍微麻煩一些:ui

 private void MainForm_Load(object sender, EventArgs e)
        {
            Thread t = new Thread(() => {        
                for (int i = 0; i < 100;i++ )
                {
                    SetLableText(i);
                    Thread.Sleep(1000);
                }
            });
            t.Start();
        }

        private void SetLableText(int num)
        {

            if (lblNumber.InvokeRequired)
            {
                lblNumber.Invoke((MethodInvoker)(() => { SetLableText(num); }));
            }
            else
            {
                lblNumber.Text = num.ToString();
            }
        }

建立線程使用了匿名方法 ()=>{};  給Label的Text賦值涉及到跨線程調用控件問題,必須使用委託,因此用了一個Invoke線程

相關文章
相關標籤/搜索