AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einbinden eines Thread Downloads

Ein Thema von Stewag · begonnen am 16. Jul 2024 · letzter Beitrag vom 22. Jul 2024
 
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#1

Einbinden eines Thread Downloads

  Alt 16. Jul 2024, 22:51
In einem mobilen Projekt für Android und iOS verwende ich bisher zum Download von Dateien in einen Stream System.Net.HttpClient und verarbeite dann das Ergebnis:

Code:
 mstream := TMemoryStream.Create;
    try
      DownloadFile('https://www.example.de/datei.txt', mstream);
      memWerte.LoadFromStream(mstream, TEncoding.ANSI);
    except
      on E: Exception do
        showmessage(E.Message)
    end;
mstream.Free;
Da Android die damit verbundene Wartezeit für den User nicht schätzt, habe ich eine Unit erstellt, die die Datei in einem synchronen Thread lädt. Das ist wohl das empfohlene Verfahren.
Die Unit funktioniert im Testprojekt auch und synchronisiert den Ergebnisstream in den Hauptthread über DownloadComplete zurück:

Code:
procedure TForm1.DownloadComplete(const stream: TStream; Success: Boolean);
begin
  if Success then
  begin
     memWerte.lines.LoadFromStream(stream)
  end
  else
    Label1.Text := 'Download failed';
end;
Mein Problem nun:
Wie bekomme ich das Ergebnis, das DownloadComplete liefert, am besten unter einen Hut mit dem Hauptstream?
Muss ich dazu einen Timer einrichten, der zyklisch prüft, ob memWerte.lines schon <> '' ist oder gibt es einen eleganteren Weg?

Hier der Aufruf des Thread Downloads:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  Downloader: TFileDownloader;
  mstream: TMemoryStream;
begin
   try
     mstream := TMemoryStream.Create;
     Downloader := TFileDownloader.Create('https://www.example/datei.txt', mstream);
     Downloader.OnDownloadComplete := DownloadComplete;
     Downloader.Start;
   finally
      mstream.Free;
   end
end;
Steffen

Geändert von Stewag (16. Jul 2024 um 23:27 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz