C#线程更新UI的方法

C#多线程更新界面有多种方法:

1.     使用Application.DoEvents();

2.     使用委托delegate

3.      使用BackgroundWorker; 最偷懒的办法(Winform/Silverlight通用) 

4.      设置Control.CheckForIllegalCrossThreadCalls为false,相当于不检测线程之间的冲突

5.      Dispatcher.BeginInvoke--Silverlight的独门秘籍 

6.      利用SynchronizationContext上下文 -- 最神秘的方法(Winform/Silverlight能用) 


       先记录一种方法,使用委托来更新UI,其他的方法暂时还没研究:

1、

       public delegate void LoadDataDelegate();
       public LoadDataDelegate loadDelegate;

        public void LoadContent()
        {
            loadDelegate = new LoadDataDelegate(LoadData);
            this.BeginInvoke(loadDelegate);
        }

        private void InitProvinceData()
        {
          //这里面就可以对UI进行更新了
        }


2、委托的另一种更新UI方法

      public delegate void ShowWeatherDelegate(); 

       private void ShowWeather()
        {
            if (weatherInterface.InvokeRequired)
            {
                ShowWeatherDelegate showDelegate = new ShowWeatherDelegate(ShowWeather);
                this.BeginInvoke(showDelegate);
            }
            else
            {
                weatherInterface.Visible = true;
                waitInterface1.Visible = false;
            }
        }




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值