首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

异步十秒后再做另一件事,UI受阻

2013-07-11 
异步10秒后再做另一件事,UI受阻本帖最后由 kk86868058 于 2013-07-09 16:52:15 编辑Thread getSomeData

异步10秒后再做另一件事,UI受阻
本帖最后由 kk86868058 于 2013-07-09 16:52:15 编辑


            Thread getSomeData = new Thread(new ThreadStart(delegate()
            {
                this.BeginInvoke(new ThreadStart(delegate()
                {
                    //通过网络读取一些数据
                    this.Text = "您有N条新消息";
                    
                    Thread.Sleep(10000);   //企图10秒后清除Text 但这里卡住了UI线程,怀疑是Thread静态方法就是操作主线程的原因,于是我尝试守getSomeData.Sleep.. 但发现这个实例对象并不能使用静态方法Sleep,请问怎么办好?我不想卡住UI
                    
                    this.Text ("");
                    //更多后期处理..
                }));

            }));
            getSomeData.Start();

[解决办法]

            Thread getSomeData = new Thread(new ThreadStart(delegate()
            {
                this.BeginInvoke(new ThreadStart(delegate()
                {


                    //通过网络读取一些数据
                    this.Text = "您有N条新消息";
                                                   }));
 Thread.Sleep(10000);                     
 this.BeginInvoke(new ThreadStart(delegate()
                {
                                        
                                       this.Text ("");
                                    }));

            }));
            getSomeData.Start();
[解决办法]
试一下
Thread th = new Thread((ThreadStart)delegate()
{
     this.BeginInvoke((Action)delegate()
     {
          this.Text = "您有N条新消息";
     });
     Thread.Sleep(10000); // 阻塞th线程 而非UI线程
     this.BeginInvoke((Action)delegate()
     {
          this.Text = "";
     });
});
th.Start();

热点排行