首页 > 其他 > 详细

跨线程调用控件之MethodInvoker

时间:2014-01-16 21:23:12      阅读:483      评论:0      收藏:0      [点我收藏+]

原文:http://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html

使用到两个控件,一个按钮button1,一个标签label1。

bubuko.com,布布扣
private void button1_Click(object sender, EventArgs e)  
{
   // 创建一个新线程。
    Thread thread = new Thread(new ThreadStart(myname));
     thread.IsBackground = true;
     thread.Start(); 
}
private void myname()
{
   MethodInvoker mi = new MethodInvoker(hello);
    //创建一个委托,hello是该委托所托管的代码,必须是声明为void的。
   Invoke(mi);//同步执行委托。               
    //BeginInvoke(mi);异步执行委托。
}
private void hello()
{
    label1.Text = "我是跨线程的!";
}
bubuko.com,布布扣

bubuko.com,布布扣
private Thread myThread;
private void Form1_Load(object sender, EventArgs e)
{
    myThread = new Thread(new ThreadStart(RunsOnWorkerThread));
    myThread.Start();
}
private void RunsOnWorkerThread()
{
    //DoSomethingSlow();
    string pList = "myThread线程调用UI控件";
    label1.BeginInvoke(new System.EventHandler(UpdateUI), pList);
}
//直接用System.EventHandler,没有必要自定义委托
private void UpdateUI(object o, System.EventArgs e)
{
   //UI线程设置label1属性
    label1.Text = o.ToString() + "成功!";
}
bubuko.com,布布扣

跨线程调用控件之MethodInvoker

原文:http://www.cnblogs.com/weekend001/p/3520959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!