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(500);
Console.WriteLine("스레드를 종료합니다.");
thread.Abort();
Console.WriteLine("스레드가 멈출때까지 대기합니다.");
thread.Join();
Console.WriteLine("종료");
}
}
class SlideTask
{
private int count;
public SlideTask(int count)
{
this.count = count;
}
public void KeepAlive()
{
try
{
while(this.count > 0)
{
Console.WriteLine($"{count--} left");
Thread.Sleep(10);
}
Console.WriteLine("Count: 0");
}
catch(ThreadAbortException threadAbortException)
{
Console.WriteLine(threadAbortException);
Thread.ResetAbort();
}
finally
{
Console.WriteLine("Clearing resouce");
}
}
}
}
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 |
댓글