У програмі ASP.Net користувач натискає кнопку на веб-сторінці, а потім створює екземпляр об’єкта на сервері через обробник подій і викликає метод на об’єкті. Метод переходить до зовнішньої системи, щоб робити речі, і це може зайняти деякий час. Отже, те, що я хотів би зробити, - це запустити цей виклик методу в іншому потоці, щоб я міг повернути користувачеві контроль за допомогою "Ваш запит подано". Я достатньо радий зробити це як «забути і забути», хоча було б ще приємніше, якби користувач міг продовжувати опитування об’єкта щодо статусу.
Я не знаю, чи IIS дозволяє моєму потоку продовжувати працювати, навіть якщо термін дії сеансу користувача закінчується. Уявіть, користувач запускає подію, і ми створюємо об’єкт на сервері та запускаємо метод у новому потоці. Користувач задоволений повідомленням "Ваш запит надіслано" і закриває свій браузер. Врешті-решт цей сеанс користувачів закінчиться в IIS, але потік може все ще працювати, виконуючи роботу. Чи дозволить IIS потоку продовжувати працювати, чи він уб’є його та розпорядиться об’єктом після закінчення сеансу користувача?
EDIT: З відповідей та коментарів я розумію, що найкращий спосіб зробити це - перенести тривалу обробку за межі IIS. Окрім усього іншого, це стосується проблеми переробки додатків доменів. На практиці мені потрібно випустити версію 1 з місця за обмежений час, і вона повинна працювати всередині існуючого фреймворку, тому хотіла б уникнути сервісного рівня, звідси бажання просто запускати потік всередині IIS. На практиці "тривалий час" тут буде лише кілька хвилин, а паралельність на веб-сайті буде низькою, тому це повинно бути нормально. Але наступної версії однозначно потрібно буде розділити на окремий сервісний рівень.