반응형
* volatile
: 여러 필드에 의해 값이 수정될 수 있음을 나타낸다.
(최적화 하지 않고 반드시 메모리에서 읽어올 것)
Thread.Join() : 개체가 가리키는 스레드가 종료될 때까지 현재 스레드를 차단하거나 대기 상태로 만든다.
- 작업자 스레드가 반환되고 자체 종료될 때까지 반환되지 않는다.
* Abort를 호출하면 작업이 완료되었는지 여부와 관계없이 스레드가 종료되어 리소스를 정리할 수 없다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication1
{
class ExClass
{
private volatile bool Stop;
public void DoWork() {
while (!Stop) {
Console.WriteLine("사용자 스레드 실행");
Thread.Sleep(100);
}
Console.WriteLine("사용자 스레드 다이..");
}
public void RequestStop() {
Stop = true;
}
static void Main(string[] args)
{
ExClass exClass = new ExClass();
Thread MyThread = new Thread(exClass.DoWork);
MyThread.Start();
Console.WriteLine("기본 스레드 실행");
Thread.Sleep(1000);
exClass.RequestStop();
MyThread.Join();
Console.WriteLine("마무리");
}
}
}
반응형
'IT Study > C#' 카테고리의 다른 글
[C#] 리플렉션(Reflection), 애트리뷰트(Attribute) (0) | 2021.03.04 |
---|---|
[C#] 확장 메서드, 람다 (0) | 2021.01.25 |
[C#] 프로퍼티(Property), 익명 타입 (0) | 2021.01.25 |
[C#] 암묵적 타입 (0) | 2021.01.25 |
[C#] 델리게이트(Delegate) (0) | 2021.01.24 |
댓글