Dans une application ASP.Net, l'utilisateur clique sur un bouton de la page Web, puis instancie un objet sur le serveur via le gestionnaire d'événements et appelle une méthode sur l'objet. La méthode est envoyée à un système externe pour faire des choses et cela peut prendre un certain temps. Donc, ce que je voudrais faire est d'exécuter cet appel de méthode dans un autre thread afin que je puisse rendre le contrôle à l'utilisateur avec "Votre demande a été soumise". Je suis raisonnablement heureux de faire cela comme feu et oublier, même si ce serait encore plus agréable si l'utilisateur pouvait continuer à interroger l'objet pour son statut.
Ce que je ne sais pas, c'est si IIS permet à mon thread de continuer à s'exécuter, même si la session utilisateur expire. Imaginez, l'utilisateur déclenche l'événement et nous instancions l'objet sur le serveur et déclenchons la méthode dans un nouveau thread. L'utilisateur est satisfait du message "Votre demande a été soumise" et ferme son navigateur. Finalement, cette session d'utilisateurs expirera sur IIS, mais le thread peut toujours être en cours d'exécution, en cours d'exécution. IIS permettra-t-il au thread de continuer à s'exécuter ou le tuera-t-il et supprimera-t-il l'objet une fois la session utilisateur expirée?
EDIT: D'après les réponses et les commentaires, je comprends que la meilleure façon de le faire est de déplacer le traitement de longue durée en dehors d'IIS. En dehors de tout le reste, cela traite du problème de recyclage du domaine d'application. En pratique, j'ai besoin de lancer la version 1 dans un temps limité et de travailler dans un cadre existant, j'aimerais donc éviter la couche de service, d'où le désir de simplement lancer le thread dans IIS. Dans la pratique, le "long fonctionnement" ici ne durera que quelques minutes et la concurrence sur le site Web sera faible, donc ça devrait aller. Mais, la prochaine version devra certainement être divisée en une couche de service distincte.