日期:2014-05-18 浏览次数:20955 次
namespace testThreadAndDelegate
{
public partial class Form1 : Form
{
// 申明委托
public EventHandler<MyEventArgs> ChangeLabel;
public Form1()
{
InitializeComponent();
ChangeLabel = new EventHandler<MyEventArgs>(onChangeLabel); // 委托
}
// 委托方法
private void onChangeLabel(object sender, MyEventArgs e)
{
this.label1.Text = e.Text;
}
private void Form1_Load(object sender, EventArgs e)
{
new Thread(new ThreadStart(new Thtest(this).ThreadProc)).Start();
}
}
public class Thtest
{
private Form1 form;
public Thtest(Form1 form)
{
this.form = form;
}
public void ThreadProc()
{
Thread.Sleep(1000);
//更新Form1上面的Label的值。
//Form1.Label1.Text=System.DateTime.now.tostring();
// 调用委托
form.Invoke(form.ChangeLabel, new object[] { null, new MyEventArgs(System.DateTime.Now.ToString()) });
ThreadProc();
}
}
// 委托参数
public class MyEventArgs : EventArgs
{
private String text;
public MyEventArgs(String text)
{
this.text = text;
}
public String Text
{
get { return text; }
}
}
}