У меня есть проект Delphi TWebModule ISAPI, работающий на Apache.Один из моих обработчиков событий содержит логику, обработка которой может занять несколько минут.Я хотел бы создать отдельный процесс / поток для выполнения логики и немедленного возврата html обратно в браузер.Html будет иметь вызовы на стороне клиента AJAX для получения периодических обновлений прогресса процесса.
Я пытался использовать TThread , но обнаружил, что ждет код Execute дляконец перед возвратом.
Пример:
procedure Tmainweb.DoLongProcess(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
var
ProcessThread: TProcessThread;
begin
ProcessThread := TProcessThread.Create(True);
ProcessThread.Execute;
Handled := True;
Response.Content := '<html><body>Processing - would also include ajax stuff to get periodic updates</body></html>
end;
TProcessThread - мой поток обработки, выполнение которого может занять несколько минут.Когда я запускал это приложение, я думал, что управление сразу же продолжится после ProcessThread.Execute .Но это не так.Вместо этого он ожидает завершения кода в процедуре Выполнить .
Как я могу это сделать?Как создать асинхронный процесс, чтобы браузер не находился в состоянии ожидания?