Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2013, 11:10
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию Реализация параллельной работы

Доброе утро!
У меня возник вопрос. Пару месяцев назад начал работать с делфи.
Подскажите как реализовать следующую задачу.

Вот как сейчас работает моя программа:
- слушает определенный порт
- если на этот порт приходит запрос от клиента, то обрабатывает этот запрос
- если в момент обработки запроса от клиента приходит еще один запрос, то его необходимо отклонить

Запрос представляет из себя строку с параметрами. Получив эти параметры программа вызывает функцию из Dll,
которая отправляет эти параметры на устройство через COM- порт. Устройство обрабатывает данные и возвращает ответ.

Суть проблемы. Обработка данных устройством занимает 15-20 секунд, и в это время все запросы приходящие на порт, который слушается -- становятся в очередь и не обрабатываются пока не отработает функция. Это не допустимо. Необходимо, чтобы в случае занятости -- клиент сразу получал ответ. Как наладить параллельную работу
прослушки порта и остальной работы программы?

Вот участок кода, который обрабатывает запросы:

Код:
if ServerSocket.Socket.ActiveConnections = 1 then
    begin
       //тут читаем параметры запроса
      CheckRequest; // обрабатывает запрос (15-20 секунд);
      GetParam:='';
      exit;
    end
    else
    begin
      ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].SendText('Сервер не доступен');
      Application.ProcessMessages;
      Buffer.Lines.Insert(0,'Отключаем лишний коннект');
      Application.ProcessMessages;
      ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].Close;
      Application.ProcessMessages;
      ConNum;
    end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025