>  기사  >  백엔드 개발  >  C# 스레드 절전

C# 스레드 절전

王林
王林원래의
2024-09-03 15:25:49724검색

현재 실행 중인 스레드는 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() 메서드에 매개변수로 전달된 시간(밀리초)이 0이면 실행할 준비가 된 동일한 우선순위의 다른 스레드가 실행을 시작합니다.
  • timespan 속성에 매개변수로 전달된 시간이 0이면 실행 준비된 동일한 우선순위의 다른 스레드가 실행을 시작합니다.

C#에서 Thread Sleep 구현 예

다음은 C#Thread Sleep의 예입니다.

예시 #1

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)
{
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라는 클래스가 생성되고 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라는 클래스가 생성되고 Start() 메서드를 사용하여 샘플 메서드에서 실행이 시작됩니다. 샘플링 방식으로 동작하는 스레드에서는 Sleep() 메서드를 사용하므로 스레드가 연속적으로 실행되지는 않는다. 출력은 위의 스냅샷에 표시됩니다.

결론

이 튜토리얼에서는 프로그래밍 예제와 그 출력을 통해 ThreadSleep 메서드의 정의, 구문, 작동을 통해 C#의 ThreadSleep 메서드 개념을 이해합니다.

추천기사

C# Thread Sleep에 대한 안내입니다. 여기에서는 C# Thread Sleep 소개와 그 작업, 예제 및 코드 구현에 대해 설명합니다. 더 자세히 알아보려면 다른 추천 기사를 살펴보세요. –

  1. C#의 난수 생성기란 무엇인가요?
  2. Java의 정적 생성자 | 근무 | 애플리케이션
  3. C#의 TextWriter | 예시
  4. C#에서 정적 생성자를 어떻게 사용하나요?

위 내용은 C# 스레드 절전의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C# 스레드 조인다음 기사:C# 스레드 조인