In un'applicazione ASP.Net, l'utente fa clic su un pulsante nella pagina Web e questo crea un'istanza di un oggetto sul server tramite il gestore di eventi e chiama un metodo sull'oggetto. Il metodo passa a un sistema esterno per eseguire operazioni e ciò potrebbe richiedere del tempo. Quindi, quello che vorrei fare è eseguire quella chiamata al metodo in un altro thread in modo da poter restituire il controllo all'utente con "La tua richiesta è stata inviata". Sono ragionevolmente felice di farlo come fuoco e dimentica, anche se sarebbe ancora più bello se l'utente potesse continuare a interrogare l'oggetto per lo stato.
Quello che non so è se IIS consente al mio thread di continuare a funzionare, anche se la sessione dell'utente scade. Immagina, l'utente attiva l'evento e noi istanziamo l'oggetto sul server e attiviamo il metodo in un nuovo thread. L'utente è soddisfatto del messaggio "La tua richiesta è stata inviata" e chiude il browser. Alla fine, questa sessione di utenti scadrà su IIS, ma il thread potrebbe essere ancora in esecuzione, funzionando. IIS consentirà al thread di continuare a funzionare o lo interromperà e smaltirà l'oggetto una volta scaduta la sessione utente?
EDIT: Dalle risposte e dai commenti, capisco che il modo migliore per farlo è spostare l'elaborazione di lunga durata al di fuori di IIS. Oltre a tutto il resto, si tratta del problema del riciclaggio del dominio app. In pratica, ho bisogno di ottenere la versione 1 da terra in un tempo limitato e devo lavorare all'interno di un framework esistente, quindi vorrei evitare il livello di servizio, da qui il desiderio di sparare semplicemente dal thread all'interno di IIS. In pratica, la "lunga durata" qui sarà solo di pochi minuti e la concorrenza sul sito web sarà bassa, quindi dovrebbe andare bene. Ma la prossima versione dovrà sicuramente essere suddivisa in un livello di servizio separato.