![]() |
|
Модераторы: gambit |
![]()
|
|
| dreaktor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.1.2006 Репутация: нет Всего: нет |
Идея: Страница, вызванная с определенными параметрами в querystring создает объект некого класса, внутри которого начинает выполняться поток (один поток на один объект). Сразу после создания объект этого класса передается в статичный массив, объявленный в Global.asax и обработка запроса завершается. В случае завершения приложения, оно отлавливает останов, шлет запрос php-скрипту, который через 5 секунд шлет обратный запрос, чтобы создать новое приложение взамен старому. Наблюдаем: При запросе страницы приложение запускается и поток внутри объекта, находящегося в статичном массиве начинает стабильно работать. После 1-3 х часов работа потока внезапно прекращается, а никаких событий останова не отлавливается. Ловил с помощью метода Application_End(). Вопрос: В чем проблема? Нормально ли такое "тихое" завершение запущенных из приложения потоков? |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
dreaktor
Честно говоря, не знаю, должна ли вообще корректно работать такая штука. Если мне нужен постоянно работающий поток в веб-приложении, независимый от реквестов, я юзаю HttpModule. |
|||
|
||||
| dreaktor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.1.2006 Репутация: нет Всего: нет |
Очень дельный совет, если бы только ты объяснил поподробней, как бы ты стал реализовать это с помощью HttpModule. Передать объект, внутри которого выполняется поток, внутрь подключенного к приложению модуля?
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
dreaktor
Идея такая: создается HttpModule, который при инициализации запускает поток, ответствуенный за выполнение асинхронных операций. Для управления этим HttpModule создается singleton класс. В него добавляется метод Execute(IOperation op). Этот метод помещает op в очередь, которая обрабатывается созданным потоком:
IOperation - общий интерфейс для всех асинхронных операций. В твоем примере это код, который выполняется внутри "одного потока на один объект". Примерно так. Пиши, если есть вопросы. |
|||
|
||||
| dreaktor |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.1.2006 Репутация: нет Всего: нет |
О, теперь у меня много вопросов:
Как я понимаю, создается поток для управления остальными потоками?
Объясни пожалуйста, что есть "singleton класс"? В результате многих попыток привести программу к работающему виду, у меня создалось впечатление, что проблема в том, куда поместить этот самый объект с потоком, чтобы он мог выполняться сколь угодно долго или, на худой конец, приложение могло бы нормально отлавливать свое завершение. Потому что в данный момент работает все, за исключением отлавливания завершения. Насколько далеки от истины мои догадки? Еще была идея: внутри потока, возможно, накапливаются данные и в результате длительного выполнения кончается память, выделенная мне хостингом. Возможно ли аварийное завершение приложения в таком случае без вызова соответствующего события? |
||||
|
|||||
| arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
http://www.rsdn.ru/article/patterns/singleton.xml
Да, именно. Создание каждого нового потока инкапсулируется в класс, реализующий IOperation.
HttpModule, потому что только он в веб-приложении работает независимо от request/response. Боюсь, что в случае аварийного останова, как ты понимаешь, ничего не получится. Наверное, мониторить нужно не изнутри проги, а снаружи |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |