• c#线程间操作UI-Invoke和BeginInvoke


    利用Invoke和或BeginInvoke实现线程间操作UI的简单例子。

     1  /*
     2          窗体包含一个button和一个richtextbox控件
     3          * 注:必须在子线程中执行Invoke和或BeginInvoke
     4          */
     5         /// <summary>
     6         /// 线程委托
     7         /// </summary>
     8         public delegate void g_Delegate1();
     9         /// <summary>
    10         /// 线程调用BeginInvoke修改UI委托
    11         /// </summary>
    12         public delegate void g_Delegate2();
    13         /// <summary>
    14         /// 线程函数
    15         /// </summary>
    16         public void UpdateTxt1()
    17         {
    18             g_Delegate2 pD2 = new g_Delegate2(UpdateTxt2);//在新的线程中建立委托,指向UpdateTxt2函数
    19             while (true)
    20             {
    21                 this.Invoke(pD2);//子线程执行委托pd2即函数UpdateTxt2,达到线程间操作UI的目的
    22                 //this.BeginInvoke(pD2);
    23                 Thread.Sleep(1000);
    24             }
    25         }
    26         /// <summary>
    27         /// 修改UI函数
    28         /// </summary>
    29         public void UpdateTxt2()
    30         {
    31             Random pRandom = new Random();
    32             int r = pRandom.Next(255);
    33             int g = pRandom.Next(255);
    34             int b = pRandom.Next(255);
    35             richTextBox1.Text=(string.Format("颜色组合:
    红:{0}
    绿:{1}
    蓝:{2}
    ", r, g, b));
    36             this.BackColor = Color.FromArgb(r, g, b);
    37         }
    38         /// <summary>
    39         /// 按钮事件
    40         /// </summary>
    41         /// <param name="sender"></param>
    42         /// <param name="e"></param>
    43         private void button1_Click(object sender, EventArgs e)
    44         {
    45             g_Delegate1 pD1 = new g_Delegate1(UpdateTxt1);//线程委托,指向UpdateTxt1
    46             Thread pThread = new Thread(new ThreadStart(pD1));//新建线程,指向委托pD1即函数UpdateTxt1
    47             pThread.Start();//开始新线程
    48         }

    效果图如下:

  • 相关阅读:
    权限管理UI
    NET Core 2.0 介绍和使用
    Spring MVC Integration,Spring Security
    微服务系统中的认证策略
    使用git建立远程仓库,让别人git clone下来
    回顾2016,展望2017
    spring security之httpSecurity 专题
    Android VelocityTracker简介
    Android-onInterceptTouchEvent()和onTouchEvent()总结
    两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!
  • 原文地址:https://www.cnblogs.com/dullfish/p/6092432.html
Copyright © 2020-2023  润新知