Показать сообщение отдельно

  #4  
Старый 05.02.2010, 17:01
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

Репутация: 229
По умолчанию

Цитата:
У меня проблемма не в потоках, а в одной функции.
Я не использую потоки, мне просто надо сделать так, чтобы через WinSock посылался запрос в бесконечном цикле.
делать задержку в 1 - 10 секунд так-же не вариант.
нужен бесконечный цикл без задержек и открытия кучи соединений.
Хорошо, если winsock+while открывает так много соединений, то просто пиши код чтобы ждал завершения функции и начинал заного с функции (больше не знаю как помочь):
Пиши в uses -> SYNCOBJS

Заводи переменную cs:TCriticalSection;
(на всю программу)
(и в formcreate пиши -> cs:=tcriticalsection.create

Ты вызываешь функцию в while цикле как я понял, верно? Если да то код должен был примерно таким:
Код:
while true do
 begin
  fWSRecv('localhost',
'GET /log/ass.php' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0' + #13#10 +
'Accept: text/html' + #13#10 +
'Accept-Language: ru' + #13#10 +
'Accept-Charset: windows-1251' + #13#10 +
'Connection: close' + #13#10#13#10);
 end;
Теперь берешь и дополняешь его:
Код:
while true do
 begin
  cs.Enter;
  fWSRecv('localhost',
'GET /log/ass.php' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0' + #13#10 +
'Accept: text/html' + #13#10 +
'Accept-Language: ru' + #13#10 +
'Accept-Charset: windows-1251' + #13#10 +
'Connection: close' + #13#10#13#10);
  cs.Leave;
 end;
Тем самым он будет ждать пока функция завершится, как она завершилась -> стартует заного! (или же попробуй еще cs.Leave; поставить в конце функции (если выше приведенный код -> не канает))

По другому -> увы не знаю как сделать

Последний раз редактировалось wolmer; 05.02.2010 в 17:05..
 
Ответить с цитированием