[ C# ] 씨샵 스레드 기본 학습 사용법 - Thread
1. using 사용 선언
using System.Threading;
2. Thread 선언 & 시작
// Thread 선언
Thread thread = new Thread(Second);
// Thread 시작
thread.Start();
3. 기본 예제 소스
using System;
using System.Threading;
internal class Program
{
private static void Main(string[] args)
{
// Thread 선언
Thread thread = new Thread(Second);
// Thread 시작
thread.Start();
for (int i = 0; i < 5; i++)
{
Console.WriteLine("M" + i);
Thread.Sleep(5);
}
Console.WriteLine("Main End");
}
private static void Second()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("S" + i);
Thread.Sleep(5);
}
Console.WriteLine("Second End");
}
}
M0
S0
S1
M1
S2
M2
M3
S3
S4
M4
Main End
Second End
4. 스레드가 종료될 때까지 호출 스레드 차단
private static void Main(string[] args)
{
// Thread 선언
Thread thread = new Thread(Second);
// Thread 시작
thread.Start();
// Thread 기다리기
thread.Join();
Console.WriteLine("Main End");
}
private static void Second()
{
for (int i = 0; i < 3; i++)
Console.WriteLine(i);
Console.WriteLine("Second End");
}
0
1
2
Second End
Main End
5. 스레드 강제 종료 (사용 불가)
.NET 5부터 지원 하지 않음
// Thread 종료
thread.Abort();
6. 프로세스 종료시 스레드 중지
private static void Main(string[] args)
{
// Thread 선언
Thread thread = new Thread(Second);
// Thread 백그라운드 지정
thread.IsBackground = true;
// Thread 시작
thread.Start();
Console.WriteLine("Main End");
}
public static void Second()
{
for (int i = 0; i < 100; i++)
Console.WriteLine(i);
Console.WriteLine("Second End");
}
0
1
*~*
9
10
Main End
11
12 프로세스 종료
7. 스레드 변수 전달
private static void Main(string[] args)
{
// Thread 선언
Thread thread = new Thread(Second);
// Thread 시작 (전달 값)
thread.Start("Start");
Console.WriteLine("Main End");
}
public static void Second(object obj)
{
Console.WriteLine((string)obj);
Console.WriteLine("Second End");
}
Main End
Start
Second End
==========
댓글
댓글 쓰기