클릭 이벤트에서 사용자가 리디렉션되기까지 약 4 초가 걸리는 코드가 있습니다.백그라운드에서 코드를 실행하려면 어떻게해야합니까?
사용자를 리디렉션 할 수있는 방법이 있습니까? 코드가 여전히 서버에서 실행됩니까? I
클릭 이벤트에서 사용자가 리디렉션되기까지 약 4 초가 걸리는 코드가 있습니다.백그라운드에서 코드를 실행하려면 어떻게해야합니까?
사용자를 리디렉션 할 수있는 방법이 있습니까? 코드가 여전히 서버에서 실행됩니까? I
당신은 백그라운드 스레드를 시작할 수 있습니다 사용에 대한 (또는 스레드 풀의 작업)를 처리하고 그 동안 사용자를 리디렉션합니다. 그러나 리디렉션 된 요청이 도착할 때까지 작업이 완료된다는 보장은 없습니다. 당신이 그것을 필요로합니까? 결과를 표시하기 전에 처리를 완료해야하는 작업입니까?
스레드가 그 일을하는 동안 AppDomain
가 가비지 수집을 막을 수 있다고 생각하지 않습니다 ... 장기 실행 작업을 별도의 서비스로 분리하려는 경우가 있습니다 해당 서비스에 연결 한 다음 사용자를 리디렉션하십시오. 요청에 대한 ID 개념이 있으면 리디렉션 URL에 매개 변수로 포함시켜 리디렉션 요청이 들어 오면 서비스 처리가 완료되었는지 확인할 수 있습니다.
그럼, 스레드 대신 webservice를 만들고 서비스를 호출하고 사용자를 리디렉션하면 서비스가 여전히 실행됩니까? 실행이 끝나면 사용자에게 응답을 보내지 않아도됩니다. 사용자를 대기시키지 않고 실행해야합니다. – ShadowG
@ShadowG : 웹 서비스 자체가 매우 빠르게 돌아오고 싶지만 작업을 추가하려고합니다. 대기열에, 또는 그와 비슷한 것. –
어떻게 XHR Request 또는 .. 후자는 아마 다른 스레드에서 프로세스 실행을 시작하고 클라이언트에 응답을 보낼를 들어, 사용자를 리디렉션 싶어
예, create a new thread 메소드를 호출하거나 asynchronous handlers을 사용하십시오.
값 비싼 행동의 결과가 사용자가 다음 페이지에서 볼 수있는 것에 영향을 미치는지 여부에 달려 있습니다. 또는 ajax를 사용하여 페이지가로드 된 후 처리 할 수 있습니다.
BackgroundWorker는 자신 만의 스레드를 유지 관리하는 것이 좋지 않은 경우 훌륭한 업무를 수행합니다.
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
응용 프로그램 풀에서 새 스레드를 위로 돌립니다. – N0Alias