zoukankan      html  css  js  c++  java
  • 跨线程调用控件之MethodInvoker

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

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

    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 = "我是跨线程的!";
    }

    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() + "成功!";
    }
  • 相关阅读:
    webpack
    react 原理
    jest
    input 自动获取焦点
    taro
    html5标签
    webpack
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/weekend001/p/3520959.html
Copyright © 2011-2022 走看看