|
Вопрос # 6 293/ вопрос закрыт / |
|
Приветствую, уважаемые эксперты!
Я программирую в Delphi XE2, и столкнулся с глупой проблемой.
Проблема у меня с отдельным потоком, и циклом в нём.
А если точнее, то поток произвольно завершает свою работу, или зависает. (Не разобрался до сих пор)
Приложение: Переключить в обычный режим-
-
- <code>
- TNewThread = class(TThread)
- private
- protected
- procedure Execute; override;
- public
- end;
- </code>
-
- TNewThread.Create(false);</code>
-
-
- Stop:=True;</code>
-
-
- <code>
- procedure TNewThread.Execute;
- begin
- while not(Stop) do
- begin
- IdHTTP:=TidHTTP.Create(nil);
- IdHTTP.HandleRedirects:=True;
- try
- hash:=IdHTTP.Get('http://site.ru/1.php');
- except
-
- Continue;
- end;
- r:=TRegExpr.Create;
- r.InputString:=hash;
- r.Expression:='<div class="post_text">(.*?)</div>';
- if r.Exec then
- begin
- text:=r.Match[1];
- text:=StringReplace(text,'"','"',[rfReplaceAll]);
- end;
- r.Free;
-
- if text='' then
- begin
-
- Sleep(1000);
- Continue;
- end else if text>'' then begin
-
- end;
- end;
-
- end;
- </code>
-
-
-
-
-
-
-
-
 |
Вопрос задал: Овчинников Алексей Иванович (статус: Посетитель)
Вопрос отправлен: 26 октября 2012, 15:17
Состояние вопроса: закрыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 21; последнее сообщение — 30 октября 2012, 12:14; участников в обсуждении: 3.
Страницы: [« Предыдущая] [1] [2]
|
Вадим К (статус: Академик), 30 октября 2012, 12:14 [#21]:
PostMessage, как написали выше, ассинхронный - поток его отправил и забыл, а главный поток обработает его как только сможет. SendMessage работает немного по другому. Он отправляет сообщение и ждет, пока другой поток обработает его. Более того, если посмотреть на SendMessage, то видно, что он может возвратить результат назад в поток.
Итого, как сделать передачу картинки.
Поток отправляет с помощью sendmessage сообщение, третим параметром которого является ссылка на TBitmap (можно конечно и TImage, но это как то не красиво). Главный поток, получив такое сообщение, приводит параметр назад к TBitmap, копирует (копирует!!!) содержимое себе и выходит с обработчика. Отправляющий поток может себе работать дальше. Пока главный поток будет копировать себе картинку, отправляющий поток будет на паузе и ничего плохого не случиться. Если же главный поток скопирует не содержимое, а ссылку, то как только отправляющий поток поменяет картинку, произойдет бяка.
Галочка "подтверждения прочтения" - вселенское зло.
|
2 ноября 2012, 20:58: Вопрос закрыт (решение принял автор вопроса — Овчинников Алексей Иванович): Вопрос решён, всем огромное спасибо.
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|