Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление файлов сервера на лету. 
:(
    Опции темы
priest08
Дата 27.7.2010, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Сервак крутится на IIS6. Среди всего прочего там есть HttpModule, который при инициализации создает отдельный поток. Работает поток так:
Код

while (true)
{
    //тут происходит что-то и поток усыпляется на 2 минуты.
}

Предположим, что в приложение были внесены некоторые изменения. После чего, не тормозя IIS, файлики приложения просто заменяются в виртуальном каталоге. Насколько я понимаю, при этом создается новый домен приложения и оно "плавно" переносится туда. Старый домен поддерживается в рабочем состоянии до тех пор, пока не завершится обработка всех незаконченных запросов.
Но поток то работает всегда (ну пока не произойдет какой-то совсем злой эксепшен, которого по хорошему быть не должно). Так что он по идее никогда не завершится.
Собственно вопрос: сколько потоков у меня будет?
Ведь в новом домене поток опять будет создан..? А старый поток?
PM MAIL   Вверх
VirusUZ
  Дата 27.7.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 9.4.2010
Где: Узбекистан, Навои й обл.

Репутация: нет
Всего: -2



Код

Syste.Threading

--------------------
Virus
PM MAIL   Вверх
priest08
Дата 27.7.2010, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.3.2008

Репутация: нет
Всего: нет



Я знаю, как создать поток.
Я спрашиваю, сколько потоков у меня будет?
Код

private Thread _Thread;
private EventWaitHandle _waitdtelecomHandle;

void IHttpModule.Init(HttpApplication application)
        {
            //Создаем потом при инициализации модуля.
            if (application == null) throw new ArgumentNullException("application");
            if (_Thread != null) return;
            _waitdtelecomHandle = new EventWaitHandle(false, EventResetMode.AutoReset, "ProcessNewTransactions");
            //В методе Processing.StartProcessTransactionsThread создается поток с бесконечным циклом, и ссылка на него возвращается. Мы ее запоминаем.
            _Thread = Processing.StartProcessTransactionsThread(_waitdtelecomHandle, TimeSpan.FromMinutes(2));
        }

        void IHttpModule.Dispose()
        {
            //При завершении работы модуля поток должен умереть и ссылка на него станет null.
            _Thread.Abort();
            _Thread = null;
        }


Но, если судить по логам, поток то вроде стартует 1 раз. Но в методе потока сама обработка за один цикл запускается несколько раз (как будто несколько потов сразу работают). Вот я и подозреваю, что при замене файликов "на лету" (и соответственно создании нового домена и их переносе туда) мой поток не умирает (он же никогда не освободится). Поэтому при каждой замене потоки плодятся (глупость какая-то, но я уже просто хз, на что грешить) и шлют лишние запросы за сервак. Да еще и базу мне портят.
Вот и спрашиваю, может ли быть такое?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.