C#-子线程更新主线程方法-invoke

凡是异步线程,thread delegate task event,都需要使用invoke调用UI的控件。

Interaction是一个委托函数,必须要声明。因为Invoke方法需要创建一个委托。
private delegate void Interaction();//自定义的委托
                this.Invoke((Interaction)delegate
                {
                });
或者:
                this.Invoke(new EventHandler(delegate//自带,不带参数委托
                {
                }));
或者; 
                this.Invoke((EventHandler)delegate
                {
                });
或者;
                this.Invoke(new MethodInvoker(delegate//自带,可带参数委托
                {
                }));
或者:
                this.Invoke(new Action(()=>//还包括Func等等
                {
                }));


使用非匿名方法时,需要从线程与主线程之间传递参数,因此需要设置有参数委托。
        delegate void setUIControlValueDelegate(string text1);
        public void threadTimer1Method(object state)
        {
            string text1 = "abcd";
            setUIControlValueDelegate d = new setUIControlValueDelegate(setUIControlValue);
            this.Invoke(d, new object[] { text1 });
            
        }
        private void setUIControlValue(string text1)
        {
            label1.Text = text1;
        }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值