KING_C#学习之Thread和Timer实现延时用法(附自动切换窗体实例)

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)>_<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值