2017-01-20 4 views
0

Asp.net에서 웹 응용 프로그램을 만들고 있습니다. IIS는 장기간 실행되는 작업을 중단시키는 경향이 있으므로 장기 실행 작업이 완료 될 수도 있고 완료되지 않을 수도 있습니다.Asp.net - 스레드가 언제 죽는 지 알 수있는 방법

문제가 있습니까? 아니. 쿼츠를 사용하여 주기적으로 작업을 다시 시작합니다 (변경 사항이 DB에 저장되므로 스레드를 다시 시작하면됩니다).

하지만 지금은 확장을 지원하기 위해 웹 응용 프로그램을 빌드하려고합니다. 여러 인스턴스를 실행하고 싶습니다.

장기간의 작업을 처리하기 위해 데이터베이스에 주어진 작업을 체크 아웃 한 인스턴스를 기록하는 열을 추가하려고합니다. 그러나 스레드가 죽으면 언제 '체크인'되었는지 확인할 수 있어야합니다.

그래서 스레드가 죽으면 어떻게 확인합니까?

+0

스레드가 실행되는 동안 AppPool이 재생되면 어떻게됩니까? 이 유형의 접근에는 질문보다 광범위하고 복잡한 여러 가지 문제가 있습니다. –

+0

이미 Quartz를 사용하고 있으므로 오랫동안 실행중인 작업을 수행하는 것이 좋습니다. 웹 응용 프로그램은 그런 종류의 작업을 수행하지 않습니다. –

+0

데이터를 변경하는 웹 서버에 HTTP 콜백을 보내는 외부 서비스를 처리하고 장기 실행 작업을 실행해야하는 방식 때문에이 작업을 수행 할 수 없습니다. –

답변

0

IIS는 스레드를 죽이지 않고 AppDomains를 종료합니다. 내가 아는 유일한 방법은 실행되는 동안 하트 비트 신호로 항목을 쓰는 것입니다. 하트 비트가 중지되면 스레드가 종료됩니다.

+0

저는 Quartz라는 기존 라이브러리를 사용하고 있습니다. http://www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net –

+0

죄송합니다. 간과 한 부분은 여전히 ​​관련성이 있습니다. –

+0

이걸 찾았습니다. 0120-13d IIS가 AppDomain을 죽이면 마침내 불려질 것이라고 생각합니까? –