有系列一段代码: 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() + " 出错了。";
} }因为数据量比较大,所以在执行的时候程序处于假死状态,这样的虚幻怎样能让他,看到一条一条的往上加,而不假死呢?
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() + " 出错了。";
} }因为数据量比较大,所以在执行的时候程序处于假死状态,这样的虚幻怎样能让他,看到一条一条的往上加,而不假死呢?
Application.DoEvents();
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);
}));
}