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

本文介绍在异步线程中如何通过多种方式使用Invoke方法来更新UI控件的值,包括使用不同类型的委托及Lambda表达式。还详细解释了如何在非匿名方法中从线程向主线程传递参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

凡是异步线程,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;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值