关于使用委托的线程备忘录

来源:互联网 发布:linux squid 正向代理 编辑:程序博客网 时间:2024/06/03 07:44

首先在界面中加入name分别为button1和button2的两个按钮,以及一个name为textBox1的文本框,将textBox1的multiline设置为true(可换行)、scrollbars设置为Vertical,激发单击事件后就可以看到效果了,淡季了按钮1,在没有执行完的情况下,按钮2是按不动的,如果单击了按钮2,在没有执行完的情况下,按钮1还能单击,这就是线程的微妙之处。

 public partial class AboutThread : Form    {        public Thread thread;//线程        public delegate void drowform(int a);//委托        public AboutThread()        {            InitializeComponent();        }        /// <summary>        /// 普通的        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button1_Click(object sender, EventArgs e)        {            for(int i=0;i<1000;i++)            {                textBox1.Text += i + "  ";            }        }        /// <summary>        /// 加了线程的        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button2_Click(object sender, EventArgs e)        {            thread = new Thread(show);            thread.Start();        }        /// <summary>        /// 线程启动后调用的方法        /// </summary>        public void show()        {            for (int i = 0; i < 2000; i++)            {                this.BeginInvoke(new drowform(drowformvoid),new object[] { i});//只要是关于界面控件的操作都在委托的那个方法执行里面执行                Thread.Sleep(5);            }        }        /// <summary>        /// 线程去操作界面控件的方法        /// </summary>        /// <param name="a"></param>        public void drowformvoid(int a)        {            textBox1.Text += a+"  ";        }    }
0 0
原创粉丝点击