2014-04-25 7 views
1

우리는 5 개의 스레드를 돌리는 1-2 명의 작업자가 있습니다. 각 스레드는 Azure 큐에서 메시지를 읽고 긴 처리를 수행하며 각 처리에는 약 1-2 시간이 걸릴 수 있습니다. 특정 작업자 역할에서 특정 스레드를 중지하는 논리를 구현하고 싶습니다. 사용자가 특정 처리를 취소하라는 요청을 제출합니다. 우리는 푸른 색 테이블에 작업자 역할과 스레드 정보를 저장합니다. 그러나 처리중인 특정 작업자 역할의 스레드를 중지시키기 위해 구현에 박차를 가하고 있습니다. 어떤 사람이 특정 작업자의 특정 스레드를 중지시키기위한 아이디어/디자인을 제공 할 수 있습니까? 스레드의 취소 토큰을 사용하여 스레드를 중지 할 수 있습니까? 작업자 역할의 스레드를 중단하는 데 도움을주십시오.Azure Worker 역할을 중지하는 방법

답변

1

일종의 플래그가 필요합니다. 따라서 모니터링되는 새로운 큐 또는 DB 업데이트.

그런 다음 취소 메시지/플래그를 모니터링하고 올바른 스레드를 선택하여 중지하는 작업자 역할로 새 스레드를 시작하십시오.

작업 속도가 느려지므로 처리중인 스레드에서 아무 것도하지 않는 것이 좋지만 스레드에 OnStop 메서드가있는 경우 스레드를 종료하기 전에 스레드를 정리할 수 있습니다.

+0

감사합니다. 당신의 접근 방식은 나에게 방향을 알려준다. 그러나 당신의 스레드가 OnStop 방법을 가지고 있다면 abt를 이해할 수 없습니다. 스레드를 종료하기 전에 스레드를 정리할 수 있습니다. " 스레드 취소 내에서 ABT 말하기? ... 내 또 다른 질문은 두 개의 작업자 역할이있는 경우 어떻게 작업자 역할의 스레드를 종료 할 수 있는지입니다. 동일한 작업자 역할이면 접근 방식이 완벽하게 작동합니다. – user145610

+0

각 작업자 역할에서 스레드를 시작해야합니다. 이 스레드에 대한 참조를 유지하십시오. 이전에 List 을 사용하여이 작업을 수행했습니다. 이 쓰레드 외부에는 다른 쓰레드가 실행되어 DB의 플래그를 모니터링합니다. 일단 스레드를 멈추게하는 플래그를 발견하면 Thread.Abort()를 호출 할 수 있습니다. –

+0

감사합니다. Adam. 나 해보자 – user145610

관련 문제