Einzelnen Beitrag anzeigen

Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Datei download mit dem Compact Framework

  Alt 21. Dez 2012, 11:49
Ich habe folgenden Code ersonnen, der grundsätzlich zwar funktioniert aber bei mehrfachem Aufruf einfach stehen bleibt. Es klappt 10 bis 12 mal in kurzer Folge und dann ist Schluß. Keine Exception, kein Timeout, keine Reaktion. Hab ne Erfolgsquote von etwa 93% ausgerechnet. Das reicht aber nicht.

Bin auf .Net nicht jetzt so fit. Mache ich vielleicht irgendwelche Kardinalfehler?


Delphi-Quellcode:
method MainForm.DownloadFile(RemoteFile: String; LocalFile: String): Cardinal;
var BytesProcessed: Cardinal;
    RemoteStream: Stream;
    LocalStream: Stream;
    Response: WebResponse;
    Request: WebRequest;
    Buffer: Array of Byte;
    BytesRead: Cardinal;
begin
  try
    try
      Request := HTTPWebRequest.Create('http://'+FURL+RemoteFile);
      if Assigned(Request) then
      begin
        Request.Timeout := 60*1000;
        Request.Proxy:=nil;
        
        Response := Request.GetResponse(); // hier bleibt er einfach stehen...
        if Assigned(Response) then
        begin
          RemoteStream := Response.GetResponseStream();
          LocalStream := File.Create(LocalFile);
          Buffer := new Byte[1024];
          repeat
            BytesRead := RemoteStream.Read(Buffer, 0, Buffer.Length);
            LocalStream.Write(Buffer, 0, BytesRead);
            inc(BytesProcessed, BytesRead);
          until BytesRead = 0;
        end;
      end;
    except
      WriteToLog('Ähm... shit...');
    end;
  finally
    if Assigned(RemoteStream) then
    begin
      RemoteStream.Flush;
      RemoteStream.Close;
      RemoteStream.Dispose;
    end;
    if Assigned(LocalStream) then
    begin
      LocalStream.Flush;
      LocalStream.Close;
      LocalStream.Dispose;
    end;

    if Assigned(Response) then
      Response.Close();

    LocalStream:=nil;
    RemoteStream:=nil;
    Response:=nil;
    Request:=nil;
  end;
  Result:=BytesProcessed;
end;
Gruß,

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 (21. Dez 2012 um 11:53 Uhr)
  Mit Zitat antworten Zitat