ASP.Net 응용 프로그램에서 사용자는 웹 페이지의 단추를 클릭 한 다음 이벤트 처리기를 통해 서버의 개체를 인스턴스화하고 개체에 대한 메서드를 호출합니다. 이 방법은 작업을 수행하기 위해 외부 시스템으로 이동하며 시간이 걸릴 수 있습니다. 그래서 제가하고 싶은 것은 다른 스레드에서 해당 메서드 호출을 실행하여 "요청이 제출되었습니다"를 사용하여 사용자에게 제어를 반환 할 수 있도록하는 것입니다. 사용자가 상태를 위해 객체를 계속 폴링 할 수 있다면 더 좋을 것이지만, 나는 이것을 실행하고 잊어 버리는 것으로 합리적으로 행복합니다.
내가 모르는 것은 사용자 세션이 만료 되더라도 IIS에서 내 스레드가 계속 실행되도록 허용하는지 여부입니다. 사용자가 이벤트를 실행하고 서버에서 개체를 인스턴스화하고 새 스레드에서 메서드를 실행한다고 상상해보십시오. 사용자는 "요청이 제출되었습니다"메시지에 만족하고 브라우저를 닫습니다. 결국이 사용자 세션은 IIS에서 시간 초과되지만 스레드는 여전히 실행 중일 수 있습니다. IIS는 스레드가 계속 실행되도록 허용합니까 아니면 스레드를 죽이고 사용자 세션이 만료되면 개체를 폐기합니까?
편집 : 답변과 의견을 통해이 작업을 수행하는 가장 좋은 방법은 장기 실행 처리를 IIS 외부로 이동하는 것임을 이해합니다. 다른 모든 것 외에도 이것은 appdomain 재활용 문제를 다룹니다. 실제로는 제한된 시간 내에 버전 1을 시작해야하고 기존 프레임 워크 내에서 작업해야하므로 서비스 계층을 피하고 싶기 때문에 IIS 내부에서 스레드를 시작하고 싶습니다. 실제로 여기서 "장기 실행"은 몇 분 밖에 걸리지 않으며 웹 사이트의 동시성이 낮아서 괜찮을 것입니다. 그러나 다음 버전은 확실히 별도의 서비스 계층으로 분할해야합니다.