반응형
C# System.Threading클래스의 사용법
1. Thread 생성
Thread TestThread = null; // thread 이름 지정
private void _TestThread()
{
int n = 0;
for(; ; )
{
n++;
Debug.WriteLine(n);
Thread.Sleep(500);
}
}
private void Button_Click_6(object sender, RoutedEventArgs e)
{
if(TestThread == null) // TestThread에 지정이 안되어 있으면 지정함.
{
TestThread = new Thread(_TestThread);
Debug.WriteLine(TestThread.ThreadState);
}
}
output: Unstarted (생성만 되고 실행 안됨)
2. Thread 시작 (start)
private void Button_Click_7(object sender, RoutedEventArgs e)
{
Debug.WriteLine(TestThread.ThreadState);
TestThread.Start();
Debug.WriteLine(TestThread.ThreadState);
}
output: Running (실행중, 반복문 돌아감)
3. Thread 정지 (Suspend)
private void Button_Click_9(object sender, RoutedEventArgs e)
{
Debug.WriteLine(TestThread.ThreadState);
TestThread.Suspend();
Debug.WriteLine(TestThread.ThreadState);
}
output: SuspendRequested, WaitSleepJoin (sleep 중에 이렇게 뜨고) -> Suspended (금방 이렇게 바뀜)
4. Thread 재시작 (Resume)
private void Button_Click_11(object sender, RoutedEventArgs e)
{
Debug.WriteLine(TestThread.ThreadState);
TestThread.Resume();
Debug.WriteLine(TestThread.ThreadState);
}
output: Suspended -> Running
4. Thread 중단 (Abort)
private void Button_Click_10(object sender, RoutedEventArgs e)
{
Debug.WriteLine(TestThread.ThreadState);
TestThread.Abort();
Debug.WriteLine(TestThread.ThreadState);
}
output:
예외 발생: 'System.Threading.ThreadAbortException'(mscorlib.dll)
AbortRequested
0x6b40 스레드가 종료되었습니다(코드: 0 (0x0)).
728x90
반응형
'C#' 카테고리의 다른 글
[C#] Thread - 반복실행, Timer (0) | 2020.11.26 |
---|---|
[OpenCV] OpenCvSharp4 - 캡쳐 화면 클릭해서 좌표 얻기 (0) | 2020.11.05 |
[C#] 화면캡쳐 + 출력 (OpenCvSharp4) (0) | 2020.10.22 |
user32.dll - 특정 창의 위치 가져오기 (0) | 2020.10.21 |
user32.dll - 프로세스 목록 (process list, window titles) 가져오기 (0) | 2020.10.21 |
최근댓글