|
Вопрос # 6 245/ вопрос решён / |
|
Приветствую, уважаемые эксперты! В своём приложении организовал многопоточную скачку файлов (в каждом потоке скачиваются разные файлы). + в потоках используется idHTTP. Всё работает. Но вот тут встал вопрос: - если сделать, допустим, обработчик у Idhttp onWork и присвоить его к IdHTTP, то разные потоки будут обращаться к нему и получается фигня. Т.е. как мне для каждого потока прикрутить свой onWork?
Приложение: Переключить в обычный режим- .....
- TNewThread = class(TThread)
- private
- procedure OnWork(Sender : TObject; AWorkMode : TWorkMode; const AWorkCount : Integer);
- protected
- procedure Execute; override;
- public
- constructor Create(CreateSuspended: Boolean);
- end;
- .....
- implementation
- .....
-
- constructor TNewThread.Create(CreateSuspended: Boolean);
- begin
- inherited Create(CreateSuspended);
- end;
-
- procedure TNewThread.Execute;
- var HTTP: TIdHTTP;
- FileStream : TFileStream;
- LoadedSz, AvLen, Itm: integer;
- FilePath, URLLink: string;
- begin
- LoadedSz:= 0;
- AvLen:= 0;
- FilePath:= '...;
- URLLink:= '...';
- HTTP := TIdHTTP.Create(nil);
- HTTP.CookieManager:= Form1.IdCookieManager1;
- HTTP.Head(URLLink);
- if AvLen < HTTP.Response.ContentLength then
- AvLen:= HTTP.Response.ContentLength;
- if FileExists(FilePath) then
- begin
- LoadedSz:= FileSizes(FilePath);
- FileStream := TFileStream.Create(FilePath, fmOpenReadWrite);
- FileStream.Position := FileStream.Size;
- end
- else
- begin
- FileStream := TFileStream.Create(FilePath, fmCreate);
- end;
-
- HTTP.OnWork := OnWork;
- HTTP.OnWorkBegin := OnWorkBegin;
- HTTP.OnWorkEnd := OnWorkEnd;
- HTTP.Request.ContentRangeStart := LoadedSz;
- HTTP.Request.ContentRangeEnd := AvLen;
- HTTP.HandleRedirects := True;
- HTTP.AuthRetries:= 3;
- HTTP.RedirectMaximum:= 15;
- HTTP.ProtocolVersion:= pv1_1;
- HTTP.AllowCookies:= True;
- HTTP.RecvBufferSize:= 768;
- HTTP.Request.Accept:= '*/*';
- HTTP.SendBufferSize:= 32768;
-
- try
- HTTP.Get(URLLink, FileStream);
- except
- end;
- HTTP.Free;
- FileStream.Free;
- end;
 |
Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 10 августа 2012, 11:07
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 10 августа 2012, 12:07; участников в обсуждении: 1.
|
eclipse (статус: Посетитель), 10 августа 2012, 12:07 [#1]:
Всем спасибо за внимание! Разобрался.
|
10 августа 2012, 12:07: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|