[c#] C# 스레드 종료

예를 들어 Task 클래스를 사용하여 작업을 수행하고 있을 때, CancellationToken을 이용하여 작업을 취소할 수 있습니다.

다른 옵션으로는 ManualResetEvent를 사용하여 스레드 간 통신 및 동기화를 할 수 있습니다. 이를 통해 스레드가 종료되기를 기다리거나 일정 시간 후에 스레드를 종료시킬 수 있습니다.

아래는 CancellationToken과 ManualResetEvent를 사용하여 스레드를 종료하는 예제 코드입니다.

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // CancellationToken을 사용한 스레드 종료
        CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
        CancellationToken cancellationToken = cancellationTokenSource.Token;

        ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), cancellationToken);

        // 스레드 종료 요청
        cancellationTokenSource.Cancel();

        // ManualResetEvent를 사용한 스레드 종료
        ManualResetEvent manualResetEvent = new ManualResetEvent(false);

        ThreadPool.QueueUserWorkItem(new WaitCallback(DoAnotherWork), manualResetEvent);

        // 지정된 시간 이후에 스레드 종료
        manualResetEvent.WaitOne(5000);
    }

    static void DoWork(object token)
    {
        CancellationToken cancellationToken = (CancellationToken)token;

        while (!cancellationToken.IsCancellationRequested)
        {
            // 스레드 작업 수행
        }
    }

    static void DoAnotherWork(object state)
    {
        ManualResetEvent manualResetEvent = (ManualResetEvent)state;

        // 스레드 작업 수행

        // 작업 완료 후 이벤트 설정
        manualResetEvent.Set();
    }
}

이와 같은 방법들을 사용하여 C#에서 안전하게 스레드를 종료할 수 있습니다.