多线程中控制控件

 private void button1_Click(object sender, EventArgs e)
        {
            System.Threading.Thread th = new System.Threading.Thread(fun);
            th.Start();
            button1.Enabled = false;

        }

        private delegate void MessageDelegate(string message);
        private void AddTalkMessage(string message)
        {
            if (button1.InvokeRequired)
            {
                MessageDelegate d = new MessageDelegate(AddTalkMessage);
                button1.Invoke(d, new object[] { message });
            }
            else
            {
                button1.Text = message;
                button1.Enabled = true;
            }
        }

        void fun()
        {
            System.Threading.Thread.Sleep(2000);
            AddTalkMessage("我是其它线程设置的");
        }
原文地址:https://www.cnblogs.com/zhuawang/p/2277268.html