Как потоки создаются и управляются приложением HttpApplication в ASP.NET?
Они извлекаются из пула потоков.Они не создаются при каждом запросе.
Что определяет, открывает ли HttpContext новый поток или использует существующий поток?
Новые потоки никогда не создаются.Они извлекаются из пула и возвращаются в него после обслуживания запроса.
Как это можно контролировать?
Это то, что ASP.NET делает оченьну и не то, что вы хотите контролировать, но если вы действительно настаиваете на , вот статья , в которой объясняется, как вы можете использовать потоки STA вместо потоков MTA в ASP.NET.