Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Параллельная работа двух задач   Найти похожие ветки 

 
Джек   (2004-03-09 12:59) [0]

Возникла необходимость создать следующее приложение:
При запуске на основной форме (Form1) есть TMemo в которое подгружается из файла текстовая информация для последующей обработки. Есть желание параллельно (по нажатию кнопки) запустить задачу получения электронной почты, т.е. Form2 на которой есть элемент TClientSocket. При приеме e-mail текст сообщения добавляется в TMemo основной формы. С помощью потока (Thread) не получается, т.к. не знаю как его заставить получать событие TClientSocket OnConnect и др.
Надеюсь на вашу помощь (подсказки).


 
Джек   (2004-03-10 12:40) [1]

Неужели нет никаких идей? Или мой вопрос очень глупый?


 
Digitman ©   (2004-03-10 12:44) [2]


> Джек   (10.03.04 12:40) [1]


он не глупый, вопрос твой ... он не снабжен конкретностями

например, неясен режим работы кл.гнезда

если он асинхронный неблокирующий, то непонятно желание вынести работу с транспортом в доп.поток


 
Джек   (2004-03-10 13:04) [3]

Постараюсь уточнить. Работает задача по анализу текстовых сообщений. Хочу параллельно принимать почту, анализировать отправителя и добавлять полученное сообщение в общий тестовый массив для обработки. Для получения почты использую компонент TNMPOP3. Скорость приема почты не высокая. Когда работает компонент TNMPOP3 форма не реагирует на нажатие кнопок.
Как сделать чтобы обработка текста и получение+анализ почты выполнялись одновременно? Я что-то торможу. Старенький наверное:(


 
Digitman ©   (2004-03-10 13:10) [4]

так, стоп.

в ориг.вопросе никакой TNMPOP3 не фигурировал.
фигурировал же вместо этого TClientSocket.
по факту чего и были заданы уточн.вопросы, ибо при примерении TClientSocket вполне можно обойтись и без доп.код.потока, потому что компонент позволяет задействовать асинхр.ф-ции сетевого транспорта

откуда ни с того ни с сего взялся TNMPOP3 ?
на ходу что ли придумываешь ?


 
Джек   (2004-03-10 13:19) [5]

Вот, вот. Для того, чтобы уйти от блокировки компонентом TNMPOP3 я и решил попробывать TClientSocket. Ну и уперся в вопросы.
Если можно для получайника :) подробней о асинхр.ф-циях сетевого транспорта для TClientSocket.


 
Digitman ©   (2004-03-10 13:30) [6]

устанавливаешь режим ctNonBlocking (он - по умолчанию)

устанавливаешь обработчики событий OnConnect, OnDisconnect, OnRead, OnWrite, OnError

запускаешь механизм асинхр.коннекта вызовом Open()

в случае успешного коннекта в обработчике событий OnWrite посылаешь запросы к POP3-серверу, в обработчеке событий OnRead небольшими (!!) порциями считываешь данные, пришедшие от сервера в ответ на запросы и буферизуешь их, в случае наличия в буфере целиком пришедшего сообщения выбираешь его из буфера, анализируешь отправителя и т.д. и т.п. ... время работы каждого вызванного обработчика OnRead следует минимизировать, тогда GUI не будет "заморожен" и будет вполне адекватно реагировать на действия юзера


 
Джек   (2004-03-10 13:53) [7]

Спасибо! Попробую что-нибудь сваять.


 
Джек   (2004-03-12 18:14) [8]

В догонку. А чем отличается TClientSocket.Active:= true  от
TClientSocket.Open() ?


 
Digitman ©   (2004-03-12 18:23) [9]

ничем



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
8-1069974699
mw.Kronos
2003-11-28 02:11
2004.04.04
Собственные регулаторы громкости.


14-1078740329
Marina_S
2004-03-08 13:05
2004.04.04
помогите найти конференцию по ассемблеру плиз


3-1078910986
Карелин Артем
2004-03-10 12:29
2004.04.04
Навигатор и позиция в наборе данных.


7-1074774903
Дмитрий Смирнов
2004-01-22 15:35
2004.04.04
отображенире данных из другого потока


3-1078908926
Ross
2004-03-10 11:55
2004.04.04
Непонятная ошибка msado15.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский