首先我们都知道winform下使用多线程时线程里是不能直接访问窗体的,如果访问会导致异常发生,那么要如何解决呢,接下来看下面的代码:
比如我们做一个抓取网页的程序,窗口要不断的显示抓去网页的信息情况,
第一,我们建立一个richTextBox1文本控件,然后再申明一个委托,msg是要传入到richTextBox1里的信息
public delegate void del(string msg);
第二,创建一个方法来执行访问richTextBox1,其中要用到InvokeRequired,这个主要是用来判断是否是非创建控件的线程访问,不是我们就用Invoke转到创建线程里访问;
public void SetText(string txt)
{
if(richTextBox1.InvokeRequired)
{
var lm = new del(SetText);
this.Invoke(lm, new object[] { txt });
}
else
{
txt = DateTime.Now + " >:" + txt+"\r\n---------------------------------------\r\n";
if (richTextBox1.Lines.Length > 500) richTextBox1.Clear();
richTextBox1.Select(richTextBox1.TextLength,0);
richTextBox1.ScrollToCaret();
richTextBox1.AppendText(txt);
}
}
作者:403648571@qq.com,QQ群:695080688