遇到的错误:
Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on。
意思是子线程无法操作主线程中定义的控件。
问题:
子线程结束后如何自动通知主线程?
解决:
利用委托和回调。
举例:
public class Form1 : Form
{
private Thread thread1;
//委托
public delegate void SendToParent();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
connThread = new Thread(new ThreadStart(ConnServer));
connThread.IsBackground = true;
connThread.Start();
}
private void ConnServer()
{
//线程的相关操作
SendToParent send1 = new SendToParent(ConnServerRes);
this.BeginInvoke(send1);
}
private void ConnServerRes()
{
//操作主线程中的控件
this.textbox1.Text = "成功!";
}
}
相关资料:
http://topic.csdn.net/u/20090227/15/5be6748d-c496-42cf-86a9-f40cb80bcfbb.html
http://www.cnblogs.com/markxue/archive/2010/01/20/1386163.html
委托事件回调:
http://blog.csdn.net/caobin518/archive/2009/03/11/3980079.aspx