C#委托demo

该画面主要功能是在线程中修改画面的值

 

public partial class Form1 : Form
    {
        private int num = 0;
        private bool flag = true;

        private delegate void SetValueHandler(int num);//声明一个委托
        private SetValueHandler setValueHandler;
        public Form1()
        {
            InitializeComponent();
            //setValueHandler = new SetValueHandler(setVales);
            setValueHandler = new SetValueHandler((val)=> {
                label1.Text = Convert.ToString(val);
            });
        }

        //private void setVales(int num)
        //{
        //    label1.Text = Convert.ToString(num);
        //}

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "开始")
            {
                flag = true;
                button1.Text = "停止";
                num = 0;
                new Thread(() =>
                {
                    while (flag)
                    {
                        num++;
                        if (num == 101)
                        {
                            num = 0;
                        }
                        this.Invoke(setValueHandler, num);
                        Thread.Sleep(10);
                    }
                }).Start();
            }
            else
            {
                flag = false;
                //将num显示到画面上
                this.Invoke(setValueHandler, num);
                button1.Text = "开始";
            }

            //new Thread(FunctionName).Start(num);
            //new Thread((num) => {
            //    Console.Write(num.ToString());          
            //}).Start();
        }

        private void FunctionName(object aa) {
            int a = (int)aa;
            Console.Write(a.ToString());
        }
    }

猜你喜欢

转载自blog.csdn.net/yzy1970185464/article/details/82499983