有系列一段代码:           while (sdr.Read()) {
                try
                {
                    IPAddress[] ips = Dns.GetHostAddresses(sdr[1].ToString());
                    foreach (IPAddress ip in ips)
                    {
                        richTextBox1.Text = richTextBox1.Text + "\n" + sdr[0].ToString() + "," + sdr[1].ToString() + "," + ip.ToString();
                    }
                }
                catch (Exception es) {
                    richTextBox1.Text = richTextBox1.Text + "\n" + sdr[0].ToString() + "," + sdr[1].ToString() + "   出错了。";
                }            }因为数据量比较大,所以在执行的时候程序处于假死状态,这样的虚幻怎样能让他,看到一条一条的往上加,而不假死呢?

解决方案 »

  1.   

    加上
    Application.DoEvents();
      

  2.   


            private void button1_Click(object sender, EventArgs e)
            {
                Thread thr = new Thread(new ThreadStart(TestRun));
                thr.IsBackground = true;
                thr.Start();
            }
            
            private void TestRun()
            {
                while (sdr.Read())
                {
                    //Thread.Sleep(1);
                    try
                    {
                        IPAddress[] ips = Dns.GetHostAddresses(sdr[1].ToString());
                        foreach (IPAddress ip in ips)
                        {
                            SetMsg(sdr[0].ToString() + "," + sdr[1].ToString() + "," + ip.ToString());
                        }
                    }
                    catch (Exception es)
                    {
                        SetMsg(sdr[0].ToString() + "," + sdr[1].ToString() + "   出错了。");
                    }
                }
            }        private void SetMsg(string str)
            {
                this.Invoke(new MethodInvoker(delegate
                {
                    richTextBox1.AppendText("\r\n" + str);
                }));
            }