您的位置:首页 > 房产 > 建筑 > 平台网站建设收费_缪斯设计招聘_百度热点排行榜_上海百度推广公司排名

平台网站建设收费_缪斯设计招聘_百度热点排行榜_上海百度推广公司排名

2025/7/26 8:45:37 来源:https://blog.csdn.net/S13461120713/article/details/145927737  浏览:    关键词:平台网站建设收费_缪斯设计招聘_百度热点排行榜_上海百度推广公司排名
平台网站建设收费_缪斯设计招聘_百度热点排行榜_上海百度推广公司排名

第一种方法

在实现时间显示的几种方法中,第一种方法源自Visual Studio的自动提示。在VS2022更新之后,开发体验仿佛被提升到了极致——注释自动生成,代码自动生成,程序员的大脑似乎都被解放了。正是在这样的背景下,我们设计了一个异步方法,其内部包含一个死循环,以高频率将当前时间实时更新到前台显示。这种方法简洁高效,代码清晰易懂。

        //显示时间的函数public async Task DisplayTime(){//循环显示时间while (true){TimeDispalyBinding = DateTime.Now.ToString("HH:mm:ss:fff");await Task.Delay(1);}}

调用这个方法时,我们采用了Task.Run()的方式。这种方式的优势在于,我们无需等待异步操作完成,只需调用一次即可将其完全交给后台处理,无需再额外关注。

那么,为什么不直接调用这个异步方法呢?原因在于,直接调用时,Visual Studio会提示绿色波浪线警告。为了避免这种提示,同时让代码更加清晰,我们选择显式声明。对于阅读代码的人来说,这样可以一目了然地看出这是一个异步操作,而不是普通的同步函数。这种明确的声明方式,不仅提升了代码的可读性,也符合良好的编程习惯。

            //调用时间显示的函数Task.Run(()=>DisplayTime());

第二种方法

                DateTime now = DateTime.Now;string displayTimer = now.ToString(@"hh\:mm\:ss\:fff");TextBlock.Text = displayTimer;

这种写法较为繁琐,代码风格也稍显随意。它通过一个同步函数封装了时间显示的逻辑:

        private void Timer_Tick(object sender, EventArgs e){if (DisplayOrStart){DateTime now = DateTime.Now;string displayTimer = now.ToString(@"hh\:mm\:ss\:fff");TextBlock.Text = displayTimer;}else{TimeSpan duration = DateTime.Now - startTime;// 更新TextBlock的时间显示string formattedDuration = duration.ToString(@"hh\:mm\:ss\:fff");TextBlock.Text = formattedDuration;}

调用时,使用了一个DispatcherTimer,通过周期性触发的方式更新时间显示:

            DispatcherTimer timer = new DispatcherTimer();timer.Interval = TimeSpan.FromMilliseconds(20); // 每秒更新一次timer.Tick += Timer_Tick;timer.Start();

这种实现方式虽然可行,但存在一些明显的缺点。首先,定时器的使用需要非常谨慎,稍有不慎就可能导致资源泄漏或性能问题。其次,定时器的参数设置较为复杂,涉及多个函数调用,代码显得冗长且不够简洁。相比之下,它远不如第一种方法优雅高效。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com