异步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();
//通过网络读取一些数据
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();