线程更新UI (线程与委托)

线程更新UI

1.委托主线程:

this.Invoke((EventHandler)(delegate
{
    主线程UI控件的获取等操作;
}));

 

 

if (this.richTextBox_message.InvokeRequired)
{
    this.Invoke((EventHandler)(delegate
    {
        控件操作;
    }));
}
else
{
    控件操作;
}

 

 


2.自定义委托

 

 

1)在命名空间下定义委托

namespace xxxxx
{
delegate void委托1(string 参数1);//建立委托,设置输入参数为string (可根据控件需求来修改参数类型)

 

 

 

2)建立对控件操作的函数 , 调用 函数1 对控件进行赋值即可

private void 函数1(string  参数1)
{
    if (this.控件1.InvokeRequired)
    {
        委托1 d =new委托1(函数1);
         this.Invoke(d,new object[] { 参数1 });//唤醒
    }
    else
    {
        控件1.Text= 参数1
    }

 

}

 

一般不确定线程调用可以直接这样写 例:

void aaaa(TextBox Tbox,int num)
{
    if (Tbox.InvokeRequired)
    {
        this.Invoke((EventHandler)(delegate
        {
                //Tbox控件要做的事
        }));
    }
    else
    {
                //Tbox控件要做的事
    }
}

 

创建线程

Thread aaa; //创建线程aaa
aaa = new Thread(函数1); //要运行在新线程的函数
aaa.Start(); //开始线程
//aaa.Abort(); //结束线程

 

匿名线程

 

ThreadStart threadStart = new ThreadStart(delegate()

{

线程内运算逻辑;

});

Thread thread = new Thread(threadStart);

thread.Start();//多线程启动匿名方法

 

带1个参数的线程:ParameterizedThreadStart

Thread t1 = new Thread(new ParameterizedThreadStart(函数1));
t1.IsBackground = true;
t1.Start(参数1);

注意!!! 函数1的参数必须为object

函数1(object ddd)
{

}

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值