[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#에서 안전하게 스레드를 종료할 수 있습니다.