C#使用Sleep(Int32)方法动态时间

目录

一、涉及到的知识点

1.Sleep(Int32)方法

2.Parallel.Invoke方法

二、 实例:用Sleep方法动态时间


一、涉及到的知识点

        在使用线程时,经常会用到Sleep方法,Sleep方法用于将线程挂起指定的时间,时间的单位为毫秒。本实例中将会创建一条线程,并在线程的While循环中使用Sleep方法将线程挂起一秒钟,使线程每隔一秒钟获取一次系统时间,并将系统时间显示到TextBox控件中。

        本实例实现时主要用到了多线程技术和线程的Sleep方法。

        实例中使用了Lambda表达式,实现了Thread类的构造方法中的ThreadStart委托所约定的方法。

1.Sleep(Int32)方法

        将当前线程挂起指定的毫秒数。

public static void Sleep (int millisecondsTimeout);

参数
millisecondsTimeout    Int32
挂起线程的毫秒数。 如果 millisecondsTimeout 参数的值为零,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、具有同等优先级的线程。 如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。

例外
ArgumentOutOfRangeException
超时值为负且不等于 Infinite。

2.Parallel.Invoke方法

         详见本作者的其他文章,C#用Parallel.Invoke 方法尽可能并行执行提供的每个线程-CSDN博客  https://blog.csdn.net/wenchm/article/details/135697802?spm=1001.2014.3001.5501

二、 实例:用Sleep方法动态时间

// 使用Sleep方法动态时间
namespace _065
{
    public partial class Form1 : Form
    {
        private Label? label1;
        private static TextBox? textBox1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // label1
            // 
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(12, 8),
                Name = "label1",
                Size = new Size(188, 17),
                TabIndex = 0,
                Text = "每秒种获取一次系统时间并显示:"
            };
            // 
            // textBox1
            // 
            textBox1 = new TextBox
            {
                ForeColor = Color.Red,
                Location = new Point(12, 29),
                Multiline = true,
                Name = "textBox1",
                Size = new Size(360, 45),
                TabIndex = 1
            };
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(384, 86);
            Controls.Add(textBox1);
            Controls.Add(label1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "用Sleep方法动态显示时间";
            Sleep_Func();
        }
        private static void Sleep_Func()
        {
            Thread th = new(      //创建线程对象
                () =>             //使用Lambda表达式
                {
                    while (true)  //无限循环
                    {
                        Parallel.Invoke(//在窗体线程中执行
                          () =>   //使用Lambda表达式
                            {
                                textBox1!.Text = //显示系统时间
                                    DateTime.Now.ToString("F");
                            });
                        Thread.Sleep(1000);      //线程挂起1000毫秒
                    }
                })
            {
                IsBackground = true   //设置线程为后台线程
            };
            th.Start();               //开始执行线程
        }
    }
}

相关推荐

  1. 使用动态日志简化开发时间

    2024-01-29 10:16:01       18 阅读
  2. c++获取系统时间方法

    2024-01-29 10:16:01       21 阅读
  3. c# 执行动态编译的方法

    2024-01-29 10:16:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 10:16:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 10:16:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 10:16:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 10:16:01       18 阅读

热门阅读

  1. IndexedDB

    IndexedDB

    2024-01-29 10:16:01      38 阅读
  2. 1.4编程基础之逻辑表达式与条件分支

    2024-01-29 10:16:01       25 阅读