C#使用DateTime的Now静态属性动态获得系统当前日期和时间

发布时间:2024年01月19日

目录

一实例

1.源码

2.生成效果

?编辑

二、相关知识点

1.?Thread类?

(1)Thread.Sleep()

(2)Thread(ThreadStart)

(3)IsBackground??

(4)Invoke( )

2. CreateGraphics()

3.DateTime.Now?

4.? (MethodInvoker)delegate ()


????????使用DateTime结构的Now静态属性可以轻松地获取当前系统时间。

????????DateTime结构的Now静态属性只是得到一个系统时间对象,该时间对象不会随着系统时间的变化而变化,如果要动态显示系统时间,可以使用计时器间隔地获取系统时间对象并显示。

????????可以适当地使用线程替代Timer控件。在窗体应用程序开发过程中,应当尽量避免使用窗体线程做高强度的运算或IO操作,如果窗体线程参与了过多的运算,会导致用户的操作不能及时分配到资源,用户界面会出现卡或无响应情况。

一实例

1.源码

//使用DateTime的Now静态属性动态获取系统时间
namespace _053
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            SuspendLayout();
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(394, 41);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "动态获取系统时间";         
            ResumeLayout(false);

            Thread thread = new(//创建线程
                () =>                   //使用lambda表达式
                {
                    while (true)        //无限循环
                    {
                        Invoke(         //操作窗体线程
                              (MethodInvoker)delegate ()//使用匿名方法
                              {
                                  Refresh();//刷新窗体
                                  Graphics graphics = CreateGraphics(); //创建绘图对象
                                  graphics.DrawString("系统时间:" +     //在窗体中绘出系统时间
                                      DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒"),
                                      new Font("Times New Roman", 14),
                                      Brushes.Blue,
                                      new Point(10, 10));
                              });
                        Thread.Sleep(1000);//线程挂起1秒钟
                    }
                })
                {
                    IsBackground = true   //将线程设置为后台线程
                };
            thread.Start();               //线程开始执行
        }
    }
}

2.生成效果

? ? ? ? ?

1秒钟一刷新。

二、相关知识点

1.?Thread类?

????????创建和控制线程,设置其优先级并获取其状态。?

(1)Thread.Sleep()

(2)Thread(ThreadStart)

?????????初始化 Thread 类的新实例。

public Thread (System.Threading.ThreadStart start);

参数
start    ThreadStart
表示开始执行此线程时要调用的方法的 ThreadStart 委托。

例外
ArgumentNullException
start 参数为 null。

(3)IsBackground??

(4)Invoke( )

2. CreateGraphics()

3.DateTime.Now?

4.? (MethodInvoker)delegate ()

文章来源:https://blog.csdn.net/wenchm/article/details/135684759
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。