线程间异步调用BeginInvoke

本文介绍在多线程程序中如何利用委托和BeginInvoke在子线程安全地更新主线程中的界面控件,通过封装委托方法和InvokeRequired检查实现异步调用。
摘要由CSDN通过智能技术生成

在多线程程序中,经常需要在子线程中调用到界面的更新操作(即主线程中的控件),这是侯就要用到委托了,

为了使用方便,我们可以封装一个委托的方法,在其中使用InvokeRequired来判断是否需要异步委托,直接上代码:

 	public delegate void updateProgressDelegate(Single _progress);
        public delegate void updateOperateDelegate(string _operate);
        private void updateProgress(Single _progress)
        {
            if (statusStrip1.InvokeRequired == true)
                statusStrip1.BeginInvoke(new updateProgressDelegate(updateProgress), _progress);
            else
            {
                tsspProcess.Value = Convert.ToInt32(_progress * 100.0f);
                tsslProcess.Text = (_progress * 100.0f).ToString("0.0") + "%";
            }
        }

        private void updateOperate(string _operate)
        {
            if (statusStrip1.InvokeRequired == true)
                statusStrip1.BeginInvoke(new updateOperateDelegate(updateOperate), _operate);
            else
                tsslStatus.Text = _operate;
        }

在需要更新界面时,直接调用 updateProgress和 updateOperate即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值