线程间异步调用BeginInvoke

来源:互联网 发布:英语翻译用哪个软件 编辑:程序博客网 时间:2024/06/06 16:26

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

为了使用方便,我们可以封装一个委托的方法,在其中使用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即可


原创粉丝点击