Как превратить мой Delphi класс (из idHTTP) в «поток»? - PullRequest
1 голос
/ 19 января 2020

Я написал потомок от idHTTP, чтобы реализовать свой собственный класс связи для различных веб-сервисов.

TidHTTP
|
TWebAPI
|
TWebOAuthAPI
|
TSpotifyAPI

Теперь, когда все это работает насколько я хочу, я - конечно - испытываю задержки inte rnet и, таким образом, имею «зависание» в моем приложении, которое использует указанные классы, поскольку они ожидают тайм-ауты idHTTP. Поэтому идея состоит в том, чтобы превратить мой класс в отдельный поток, чтобы хотя бы основная программа не зависала. Как бы я go об этом?

Должен ли я превратить WebAPI в нисходящее из TThread и иметь там объект TidHTTP, или позже иметь оболочку, которая использует объект TSpotifyAPI ??

Спасибо за любые подсказки на этом фронте: -)

1 Ответ

0 голосов
/ 22 января 2020

Вы можете создать потомка TThread и использовать компонент TIdHttp внутри без проблем, если вы будете следовать обычным правилам при создании Thread.

Некоторое время я создавал класс для загрузки изображений с использованием потоков, в которые без проблем включался компонент TidHttp.

  {: Clase para descargar una imagen y almacenarla en disco.}
  {: Class to download a image and save it to disk}
  TDownImageThread = class(TThread)
  private
    FURLImage: string;
    FPathImage: string;
    FFileNameImage: string;
    // Internas
    ImageName: string;
    PathURL: string;
    // Componente
    idH:TidHTTP;
  public
    // redefinir métodos
    constructor  Create(AURL:string; AOutPathImages:string);
    destructor Destroy; override;
    procedure Execute; override;
    {: URL de la imagen a descargar/ URL of the image }
    property URLImage:string read FURLImage write FURLImage;
    {: Path de disco local donde voy a almacenar la imagen/ Local path to save the image}
    property PathImage:string read FPathImage;
    {: Nombre completa (path+Nombre) de la imagen almacenada en disco local/Compete path on local}
    property FileNameImage:string read FFileNameImage;
  end;

Разработка аналогична другим потокам.
В этом случае проще, потому что он не включает визуальную часть, поэтому вы избежите проблем, связанных с синхронизацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...