Start 메서드에서 장기 실행 작업을 다른 스레드로 위임 한 다음 프로그램이 있다고 가정 해 보겠습니다. Stop 메서드가 호출 될 때, 나는 작업자 스레드가 현재 작업의 실행을 완료하고 그 작업의 중간에 두지 않도록해야합니다. 작업을 이미 완료했으며 절전 상태이면 즉시 중지 할 수 있습니다.비동기 스레드가 작업을 처리 할 때까지 주 스레드 대기 중지
내가 어떻게해야하는지 안내해주세요.
static int itemsProcessed = 0;
static Thread worker;
static void Start()
{
var ts = new ThreadStart(Run);
worker = new Thread(ts);
worker.Start();
}
static void Stop()
{
//wait until the 'worker' completes processing the current item.
Console.WriteLine("{0} Items Processed", itemsProcessed);
}
static void Run(object state)
{
while (true)
{
ALongRunningTask();
itemsProcessed++;
Thread.Sleep(1000);
}
}
이것은 휘발성 처리가 필요합니다. 그렇지 않으면 다른 스레드가 값이 변경된 것을 결코 알 수 없습니다. sleep 루프 대신 worker.Join 메서드를 사용할 수도 있습니다. –
두 진술 모두 정확하지 않습니다. 프로토 타입이 잘못되었습니다. 내 게시물 수정 됨 – BrokenGlass