[ C# ] 씨샵 스레드 기본 학습 사용법 - Thread

[ 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




댓글