как ведет себя пул потоков при обработке запросов asp.net - PullRequest
2 голосов
/ 11 ноября 2009

у нас есть сценарий, в котором при обработке одного запроса asp.net от iis из нашего кода мы создали дочерний поток из пула потоков для обслуживания некоторой фоновой задачи. Идея заключалась в том, чтобы завершить основной поток, который обрабатывает запрос без в зависимости от нашей задачи дочернего потока. Но мы сомневаемся, что при обработке запроса в asp.net рабочий процесс будет проходить до тех пор, пока поток не завершит свою задачу?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2009

Нет, если вы создали отдельный поток и у вас нет кода для его ожидания, запрос обязательно будет выполнен.

Что я не знаю , так это того, можно ли перезапустить рабочий процесс, пока выполняются потоки из пула потоков не -ASP.NET. Я сильно подозреваю, что это возможно - поэтому знайте, что ваша дочерняя задача может быть завершена в любой момент. Если это проблема, вы можете создать поток переднего плана без пула потоков.

3 голосов
/ 11 ноября 2009

Нет, фоновый поток не будет ждать окончания основного потока, он начнется немедленно. Если вы используете пул потоков, вашей задаче может потребоваться ожидание доступности потока, но это все.

Однако вы должны знать, что это может быть не очень хорошим решением, так как домен приложения, на котором работает ваш сайт asp.net, может быть переработан во время работы фонового потока. Это убьет фоновый поток, оставив задачу незавершенной. Если это возможно, вы должны разделить фоновую задачу на приложение-службу, которое выполняется в отдельном процессе. Это гарантирует, что задача не будет убита во время работы.

...