C#编程之子线程更新UI

C#编程之子线程更新UI

以前我都是这种做法:

private void WorkThread2()
        {
            while (true)
            {
                UpdateLabel1(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                Thread.Sleep(500);
            }
        }

 private void UpdateLabel1(string msg)
        {
            if (this.label1.InvokeRequired)//如果调用控件的线程和创建创建控件的线程不是同一个则为True
            {
                this.label1.Invoke(new Action<string>(UpdateLabel1), new object[] { msg });
            }
            else
            {
                this.label1.Text = msg;
            }
        }

现在可以用这样更简洁,用BeginInvoke和delegate的方法:

private void WorkThread()
        {
            while (true)
            {
                this.label1.BeginInvoke((MethodInvoker)delegate
                {
                    label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                });
                Thread.Sleep(500);
            }
        }
发布了27 篇原创文章 · 获赞 9 · 访问量 4898

猜你喜欢

转载自blog.csdn.net/weixin_41761608/article/details/92760466
今日推荐