using System;
using System.Threading;
namespace ThreadNTask
{
class Program
{
static void Main(string[] args)
{
SlideTask slideTask = new SlideTask(100);
Thread thread = new Thread(new ThreadStart(slideTask.KeepAlive));
thread.IsBackground = true;
Console.WriteLine("스레드 시작");
thread.Start();
Thread.Sleep(100);
Console.WriteLine("스레드 종료");
thread.Interrupt();
Console.WriteLine("스레드가 멈출때까지 대기");
thread.Join();
Console.WriteLine("종료");
}
}
class SlideTask
{
private int count;
public SlideTask(int count)
{
this.count = count;
}
public void KeepAlive()
{
try
{
Console.WriteLine("실행중인 스레드가 중단되지 않습니다.");
Thread.SpinWait(100000000);
while(count > 0)
{
Console.WriteLine($"{count --} left");
Console.WriteLine("WaitJoinSleep State 로 바뀌는 중");
Thread.Sleep(10);
}
Console.WriteLine("Count: 0");
}
catch(ThreadAbortException threadAbortException)
{
Console.WriteLine(threadAbortException);
}
finally
{
Console.WriteLine("리소스 지우기");
}
}
}
}
728x90
'C# > 책 예제' 카테고리의 다른 글
C# Thread Monitor 키워드를 이용한 동기화 (0) | 2019.06.08 |
---|---|
C# Thread lock 키워드를 이용한 동기화 (0) | 2019.06.08 |
C# Thread 상태 변화 (0) | 2019.06.08 |
C# Thread 임의 종료 (0) | 2019.06.08 |
C# / Thread 시작 (0) | 2019.06.08 |
댓글