У меня есть приложение ASP.NET, которое запускает длительную операцию во время фазы обработчика событий в жизненном цикле страницы ASP.NET. Это происходит, когда конечный пользователь нажимает кнопку, к базе данных выполняется несколько запросов, создается группа карт, а затем из изображений в формате jpeg создается фильм. Этот процесс может занять более минуты, чтобы завершить.
Вот ссылка на приложение
http://maxim.ucsd.edu/mapmaker/cbeo.aspx
Я попытался использовать поток из пула потоков, создать и запустить свой собственный поток и использовать платформу AsyncCallback. Проблема в том, что новый поток запускается под другим идентификатором пользователя. Я предполагаю, что основной поток запускается под ASPNET, новый поток запускается под AD \ MAXIM $, где MAXIM - имя хоста. Я знаю это, потому что при попытке подключения к базе данных возникает ошибка.
Почему новый поток имеет другой идентификатор пользователя?
Если мне удастся выяснить проблему с идентификатором пользователя, я хотел бы проверить, завершился ли процесс создания фильма, изучив переменную Session в методе Page_Load, а затем добавить ссылку на страницу для доступа к фильму.
Есть ли у кого-нибудь хорошие примеры использования параллелизма в приложении ASP.NET, которое использует или создает потоки в обратном вызове EventHandler?
Спасибо,
Matt