Форум: "Система";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизРабота компонента внутри потока. Найти похожие ветки
← →
Карелин Артем (2003-08-22 11:19) [0]Ситуация такая: хочется запустить компонент для организации FTP-сервера внутри потока. Какой цикл надо писать внутри Execute для того, чтобы компонент мог нормально ждать коннекта и чтобы поток при ожиданиии не загружал систему?
← →
Reindeer Moss Eater (2003-08-22 11:28) [1]чтобы компонент мог нормально ждать коннекта и чтобы поток при ожиданиии не загружал систему?
Какой компонент?
← →
Карелин Артем (2003-08-22 11:34) [2]Да любой! хоть TServerSocket, хоть TFtpServer.
← →
Reindeer Moss Eater (2003-08-22 11:58) [3]Про любой ответа не дадут. Дадут про конкретный.
← →
Карелин Артем (2003-08-22 12:58) [4]Не думаю, что ответ зивисит от типа компонента.
Значит так:
procedure MyThread.Execute;
begin
SomeComponent:=TSomeComponent.Create(...);
//конкретно FtpServer:=TFtpServer.Create(nil), заполнение всех свойств и активация
while not Terminated do
begin
// Что вставить сюда, чтобы компонент занимался своими делами
// Конкретно слушал порт и отвечал на запросы.
// Т.е. чтобы отрабатывались обработчики событий, которые оформлены как методы потока и чтобы при этом этот цикл не хавал слишком много времени проца.
end;
end;
← →
Reindeer Moss Eater (2003-08-22 13:17) [5]В начале Execute создать экземпляр.
Установить параметры, и открыть на прослушивание.
Дальнейший код очень сильно зависит от конкретной реализации конкретного компонента.
← →
Reindeer Moss Eater (2003-08-22 13:20) [6]Кроме всего прочего многие классы-инкапсуляторы FTP серверов имеют встроенную поддержку обработки соединений внутри вторичных потоков. И свой велосипед становится ненужен.
← →
Карелин Артем (2003-08-22 13:34) [7]>>В начале Execute создать экземпляр.
>>Установить параметры, и открыть на прослушивание.
Уже есть
>>Дальнейший код очень сильно зависит от конкретной реализации конкретного компонента.
Код реализован так, что в обычной программе достаточно установить параметры и открыть. После этого идет обработка событий в обработчиках.
>>И свой велосипед становится ненужен.
Ну а если без флейма??
По идее в цикле должно быть что-то типа ProcessMessages...
← →
Digitman (2003-08-22 13:40) [8]
> Карелин Артем
> Не думаю, что ответ зивисит от типа компонента.
зависит. еще как зависит !
одни компоненты реализуют только синхронный транспорт, другие - только асинхронный, третьи - и тот и другой
асинхронный транспорт на момент вызова методов компонента будет блокировать выполнение того код.потока, который создает и работает с компонентом. цикл ожидания/выборки/обработки событий/сообщений в синхр.режиме не нужен.
асинхронный транспорт , напротив, блокировать код.поток не будет, но это потребует организации вышеуказанного цикла
ты должен определиться, какой будешь использовать компонент и в каком режиме
← →
Карелин Артем (2003-08-22 13:42) [9]Который не блокирует поток.
← →
Reindeer Moss Eater (2003-08-22 15:11) [10]Код реализован так, что в обычной программе достаточно установить параметры и открыть. После этого идет обработка событий в обработчиках.
А теперь спроси себя, зачем создание этого компонента помещать во вторичный поток?
← →
Карелин Артем (2003-08-22 15:18) [11]Ну какой же ты редиска, да простят меня модераторы. Ну хочется мне спать в гамаке стоя на голове.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c