冯海滨博客

海滨博客

winform多线程经典实例超级简单易懂

直接上代码

  private SynchronizationContext mainThreadSynContext; //在这里记录主线程的上下文;


        private void OnConnected(object state)//由于是主线程的同步对象Post调用,这个是在主线程中执行的
        {
            //这里就回到了主线程里面了
            //做一些事情
            string sss = Convert.ToString(state);
            richTextBox1.AppendText(sss+"\r\n");

            label1.Text =( Convert.ToInt32(label1.Text)+1).ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            mainThreadSynContext = SynchronizationContext.Current;

            for (int i = 0; i < 10; i++)
            {
                Thread thread = new Thread(new ThreadStart(longidceshi));//创建线程

                thread.Start();
            }
            
        }

        public void longidceshi()
        {
          //多线程要做的列子

            for (int i = 0; i < 100; i++)
            {
                mainThreadSynContext.Post(new SendOrPostCallback(OnConnected), i);//通知主线程
            }


        }


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.6.5 Valyria

一个心高气傲,永远开拓的人。