oh no, 很久没在这里更新博客了,最近公司项目逼得比较紧,今晚加班到2330,程序猿真的不容易啊。
废话不多说了,直入今天主题,thread和timer的用法及区别。
应用背景是这样的:
在主界面(WPF)点击一个按钮,弹出一个窗体form1,即显示信息确认界面, 然后在该界面有个确认按钮btn,点击btn后,显示正在读取界面,当读取完毕后,显示读取完毕界面,等待几秒钟自动把窗体form1关闭。
完成这个任务的做法有很多种,有的童鞋可能会连续弹出三个窗体(为了切换三个不同的页面),但这个方法不太建议,会有一些意向不到的现象出现,这个留给大家自己体会。
而我采取的方案是,
一个窗体,三个用户控件(信息确认界面,正在读取信息界面,读取完毕界面),在该窗体上实例化这三个用户控件,利用其可见性visibility属性,切换他们之间的显示。
这里的难点是如何保证界面切换顺畅,不能太快,也不能太卡,这就用到延时/定时的知识了。下面我主要贴一下有关延时的主要代码:
// 方法一:新开线程休眠
var t1 = new Thread(new ThreadStart(Change2Test3));
t1.Start();
// 方法二:在主线程使用Thread.Sleep(延时),切记要加上Application.DoEvents();
// 不然会出现卡顿情况
//System.Windows.Forms.Application.DoEvents();
//Thread.Sleep(4000);
//SetTest3();
// 方法三:Timer是定时
//tmrDelayTime.Interval = 4000;
//tmrDelayTime.Enabled = true;
//tmrDelayTime.Elapsed += (sender, args) =>
//{
// var dispatcher = this.Dispatcher;
// if (dispatcher != null)
// dispatcher.Invoke((Action)delegate
// {
// tmrDelayTime.Enabled = false;
// SetTest3();
// });
//};
恳请各位大神指导,探讨学习,由于明天还要上班,不对,是加班,所以俺要先睡了,有疑问欢迎留言,共同学习,共同进步,。。。。。Thread.Sleep(999999999999999999)>_<