当前位置:编程学习 > C#/ASP.NET >>

C# 主线程的函数结束后 其他线程才响应 为什么呢???求高人指点

public partial class Form1 : Form
    {
        private delegate void ThreadWork(int i);
        Thread thread;

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            this.richTextBox1.Text = "程序开始:\r\n";
            UpdateText();
            mll();
        }

        public void UpdateText()
        {
            thread = new Thread(new ThreadStart(CrossThreadFlush));
            //thread.IsBackground = true;
            thread.Start();
        }

        public void mll()
        {      
            for (int m = 1; m < 5; m++)
            {
                this.richTextBox2.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", m, DateTime.Now) + this.richTextBox2.Text;
                this.richTextBox2.Refresh();
                Thread.Sleep(500);
            }
        }

        private void CrossThreadFlush()
        {
            while (true)
            { 

                for (int i = 1; i < 100; i++)
                {
                    ThreadFunction(i);
                    Thread.Sleep(500);
                }
            }
        }

        private void ThreadFunction(int i)
        {
            if (this.richTextBox1.InvokeRequired)//等待异步 
            {
                ThreadWork fc = new ThreadWork(ThreadFunction);
                this.Invoke(fc, new object[1] { i });
            }
            else
            {
                this.richTextBox1.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", i, DateTime.Now) + this.richTextBox1.Text;
                this.richTextBox1.Refresh();

            }
        }
    } --------------------编程问答-------------------- 因为UI操作是同步的,无论计算是多少个线程,UI显示只有一个线程在处理。 --------------------编程问答--------------------
本来是想在第一个textbox(richTextbox1)框显示委托的thread线程的方法,在richTextbox2显示主线程mll()方法,本来预想是两个文本框同时显示执行的。

可是发现只有当主线程mll()方法执行完之后才会执行UpdateText();这是为什么呢??


--------------------编程问答-------------------- fangxinggood    麻烦可以解释的详细一点么?最近刚刚学委托和异步处理    不大明白呢 --------------------编程问答-------------------- 你的线程里面要调用ui,所以要等ui线程有空。如果你的线程光是取数据,那就和ui没关系
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,