首页  >  文章  >  后端开发  >  C# 线程睡眠

C# 线程睡眠

王林
王林原创
2024-09-03 15:25:49716浏览

当前正在执行的线程可以使用 C# 中称为 Sleep() 方法的方法暂停或暂时挂起指定的时间,该时间必须以毫秒为单位指定,并作为参数传递给我们的线程正在尝试暂停或使用 timespan 属性,其中有权限指定以小时、分钟和秒为单位的时间,以便线程可以根据我们的需要暂停更长时间,而不仅仅是毫秒。

语法:

Thread.Sleep(Time_in_milliseconds);

或者

TimeSpaninstance_name = new TimeSpan(Time_in_hours_minutes_seconds);
Thread.Sleep(instance_name);

其中instance_name是TimeSpan类的实例名称。

C# 线程睡眠的工作原理

  • 每当需要暂停一个线程的执行以便其他线程可以接管并开始执行时,我们都会使用名为 Sleep() 的方法。
  • 线程需要暂停的时间量可以以毫秒为单位指定并作为参数传递给 Sleep() 方法,也可以使用 timespan 属性以小时、分钟和秒为单位指定。
  • 如果作为参数传递给 Sleep() 方法的时间(以毫秒为单位)为负数,则会引发 ArgumentOutOfRangeException。
  • 如果作为参数传递给 timespan 属性的时间为负数,则 Sleep() 方法会抛出 ArgumentOutOfRangeException。
  • 如果作为参数传递给 Sleep() 方法的时间(以毫秒为单位)为零,则准备运行的相同优先级的另一个线程开始执行。
  • 如果作为参数传递给 timespan 属性的时间为零,则准备运行的相同优先级的另一个线程开始执行。

在 C# 中实现线程睡眠的示例

以下是C#Thread Sleep的示例:

示例#1

C# 程序演示 Sleep() 方法,并以毫秒为单位传递时间作为参数。

 代码:

using System;
using System.Threading;
//a class called program is created
public class program
{
//a method called samplemethod which accepts a parameter is created
public void samplemethod(object str)
{
for (int z = 0; z < 5; z++)
{
Console.WriteLine("The thread that is executing is {0}", str);
Thread.Sleep(200);
}
}
}
//a class called check is created
public class check
{
//main method is called
public static void Main()
{
//two string variables are created which are passed as parameter previously created method in program class
string Iamthread1 = null;
string Iamthread2 = null;
//an instance of the program class is created
program d = new program();
Thread firstthread = new Thread(new ParameterizedThreadStart(d.samplemethod));
Thread secondthread=new Thread(new ParameterizedThreadStart(d.samplemethod));
firstthread.Start("Iamthread1");
secondthread.Start("Iamthread2");
}
}

输出:

C# 线程睡眠

说明:在上面的程序中,创建了一个称为程序的命名空间,其中创建了一个称为示例方法的方法,该方法接受一个参数,在该方法中操作该方法的线程将暂停一段时间。使用 Sleep() 方法指定时间。然后创建一个名为 check 的类,在该类中调用 main 方法,在该方法中创建线程的两个实例,然后使用 Start() 方法开始在示例方法上执行它们。由于在采样方法上运行的线程使用了 Sleep() 方法,因此线程不会连续执行。

示例#2

使用 TimeSpan 属性演示 Sleep() 方法的 C# 程序。

代码:

using System;
using System.Threading;
//a class called program is created
public class program
{
//a method called samplemethod which accepts a parameter is created
public void samplemethod(object str)
{
//TimeSpan property is used to specify the duration of time for which the thread must be paused
TimeSpan timeout = new TimeSpan(0, 0, 3);
for (int z = 0; z < 3; z++)
{
Console.WriteLine("The thread that is executing is {0}", str);
Thread.Sleep(timeout);
}
}
}
//a class called check is created
public class check
{
//main method is called
public static void Main()
{
//two string variables are created which are passed as parameter previously created method in program class
string Iamthread1 = null;
string Iamthread2 = null;
//an instance of the program class is created
program d = new program();
Thread firstthread = new Thread(new ParameterizedThreadStart(d.samplemethod));
Thread secondthread = new Thread(new ParameterizedThreadStart(d.samplemethod));
firstthread.Start("Iamthread1");
secondthread.Start("Iamthread2");
}
}

输出:

C# 线程睡眠

说明:在上面的程序中,创建了一个称为程序的命名空间,其中创建了一个名为示例方法的方法,该方法接受一个参数,在该方法中操作该方法的线程会暂停一段时间使用 TimeSpan 属性来计算时间。然后创建一个名为 check 的类,在该类中调用 main 方法,在该方法中创建线程的两个实例,然后使用 Start() 方法开始在示例方法上执行它们。由于在采样方法上运行的线程上使用了 Sleep() 方法,因此线程不会连续执行。输出如上面的快照所示。

结论

在本教程中,我们通过编程示例及其输出了解 ThreadSleep 方法的定义、语法和工作原理,了解 C# 中 ThreadSleep 方法的概念。

推荐文章

这是 C# 线程睡眠指南。在这里,我们讨论 C# 线程睡眠简介及其工作原理以及示例和代码实现。您还可以浏览我们其他推荐的文章以了解更多信息 –

  1. C# 中的随机数生成器是什么?
  2. Java 中的静态构造函数 |工作|应用
  3. C# 中的 TextWriter |示例
  4. 如何在 C# 中使用静态构造函数?

以上是C# 线程睡眠的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn