AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi URLDownloadToFile Dialog hängt.

URLDownloadToFile Dialog hängt.

Ein Thema von EWeiss · begonnen am 25. Jan 2019 · letzter Beitrag vom 27. Jan 2019
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.096 Beiträge
 
Delphi 12 Athens
 
#1

AW: URLDownloadToFile Dialog hängt.

  Alt 26. Jan 2019, 14:45
Der Unterschied zwischen VCL's Process Message und deiner ist, dass die von Delphi nur dann greift,
wenn dein Programm gerade nichts zu tun hat. Deine läuft in einem Eventhandler immer und solange,
bis deine Anwendung beendet wird.

SOweit ich weiß, sollte in einem Eventhandler jedoch keine Nachrichtenbearbeitung erfolgen, da diese
mitunter Reetranz Probleme verursachen kann.

z. B. im Kontext der ICS Socket Komponenten wird soweit ich mich erinnere immer empfohlen, bloß nicht
Application.ProcessMessages oder ähnliches innerhalb des Handlers aufzurufen. Das kann zum erneuten
Aufruf des Handlers für die selbe Nachricht führen (ich fragte mich zwa schon immer wieso, weil die
Nachricht doch zu dem Zeitpunkt eigentlich schon aus der Warteschlange raus sein sollte, aber es scheint
tatsächlich zu Problemen zu führen).
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: URLDownloadToFile Dialog hängt.

  Alt 26. Jan 2019, 14:52
Zitat:
Der Unterschied zwischen VCL's Process Message und deiner ist, dass die von Delphi nur dann greift,
wenn dein Programm gerade nichts zu tun hat. Deine läuft in einem Eventhandler immer und solange,
bis deine Anwendung beendet wird.
Entschuldige das ist Blödsinn! nicht richtig.

Sie läuft nur solange wie meine Callback aktiv ist und wird auch nur dann aufgerufen.
Und sie soll sicherstellen das andere Messagen weiterhin verarbeitet werden können.
Was nicht in der Callback funktioniert da diese in zu unterschiedlichen Intervallen aufgerufen wird.

Es ist nicht GetMessage sondern PeekMessage.
Im ersten bei GetMessage würde ich dir recht geben diese Queue läuft bis die Anwendung beendet ist.

Zitat:
z. B. im Kontext der ICS Socket Komponenten wird soweit ich mich erinnere immer empfohlen, bloß nicht
Application.ProcessMessages oder ähnliches innerhalb des Handlers aufzurufen. Das kann zum erneuten
Aufruf des Handlers für die selbe Nachricht führen (ich fragte mich zwa schon immer wieso, weil die
Nachricht doch zu dem Zeitpunkt eigentlich schon aus der Warteschlange raus sein sollte, aber es scheint
tatsächlich zu Problemen zu führen).
Würde ich das überhaupt nicht tun würde mein Fenster sich niemals aktualisieren.
Das Problem ist die Callback das sie nicht kontinuierlich aufgerufen wird sondern nur nach einer bestimmten zeit.
Deshalb bekomme ich keinen zugriff auf meinen Dialog.
Zitat:
Das kann zum erneuten Aufruf des Handlers für die selbe Nachricht führen
Wenn es mal so wäre dann würde mein Dialog nicht hängen!

Ich habe es jetzt erstmal so gelöst ändert nichts daran das der Dialog hängt und ich keine Eingaben über den Button tätigen kann
aber so wird der Dialog zumindest geschlossen wenn das TIMEOUT abgelaufen ist.

Delphi-Quellcode:
BindStatusCallback := TBindStatusCallback.Create;
BindStatusCallback.FTimeouCheck := True;
BindStatusCallback.FTimeoutValue := GetCurrentTime + TIMEOUT;

Status := URLDownloadToFileW(nil, Url, FBackdroppath, 0, BindStatusCallback);
//… callback
  if FTimeouCheck then
  begin
    if GetCurrentTime > FTimeoutValue then
    begin
      Result := E_ABORT;
      szST := 'TimeOut.. no TMDB_backdrop is loaded';
      SendMessage(GetDlgItem(hDlg, ID_DOWNLOADTEXT), WM_SETTEXT, 0, LONG_PTR(szST));
      Sleep(3000);
      SendMessage(hDlg, WM_CLOSE, 0, 0);
      hDlg := 0;
      Exit;
    end;
  end;
gruss

Geändert von EWeiss (26. Jan 2019 um 17:15 Uhr)
  Mit Zitat antworten Zitat
old7
(Gast)

n/a Beiträge
 
#3

AW: URLDownloadToFile Dialog hängt.

  Alt 26. Jan 2019, 20:16
Da "man" eh Alles besser weiß, kennt "man" auch den Unterschied zwischen SendMessage und PostMessage, gell?

Warum schreibt "man" nicht endlich in die Signatur, dass "man" non-VCL bevorzugt?


Gibbets hier kein Popcorn-Smiley ?

SCNR

https://www.delphipraxis.net/199075-...log-win10.html
Sorry, falscher Link, meinte den hier:
https://www.delphipraxis.net/199396-...nngemaess.html

Geändert von old7 (26. Jan 2019 um 20:24 Uhr) Grund: Falscher Link
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: URLDownloadToFile Dialog hängt.

  Alt 26. Jan 2019, 23:01
Zitat:
Da "man" eh Alles besser weiß
Und.. Was stimmt an meiner Aussage nicht?
Wenn dem so wäre müsste ich hier nichts fragen aber Danke für die Blumen.

Zitat:
auch den Unterschied zwischen SendMessage und PostMessage, gell?
Ja und wo liegt das Problem oder besser was willst du mir sagen.
Zitat:
Sorry, falscher Link, meinte den hier:
Was hat der link (Thread) mit meiner frage zu tun.
Zitat:
Warum schreibt "man" nicht endlich in die Signatur, dass "man" non-VCL bevorzugt?
Warum sollte ich das tun?

Möchtest du jetzt über mich herziehen oder hast du vielleicht auch eine funktionierende Lösung anzubieten?

Du must aber nicht meinen das durch Postmessage die Callback eher aufgerufen wird.
Wenn der Server der an gepinkt wurde keine Rückantwort sendet dann kannst du lange warten bis die Callback aufgerufen wird.
Und das sorgt dann dafür das mein Dialog hängt.

Aber habe eine Lösung oben gepostet mit Timeout das reicht mir erstmal.

gruss

Geändert von EWeiss (27. Jan 2019 um 00:24 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.096 Beiträge
 
Delphi 12 Athens
 
#5

AW: URLDownloadToFile Dialog hängt.

  Alt 27. Jan 2019, 08:43
SendMessage wartet (d.h. blockiert) so lange, biss die Nachricht auf der Gegenseite (wer immer das auch ist) bearbeitet wurde.
PostMessage schickt die Nachricht los und kehrt gleich zurück.

Wenn ich's richtig gesehen habe hast du dieses Muster in deinem Code:

SendMessage
Sleep
Sendmessage

Keine Ahnung ob das wirklich die Ursache ist,aber das sieht zumindest auf einen oberflächlichen Blick so aus, als ob
da eigentlich PostMessage hin gehört.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: URLDownloadToFile Dialog hängt.

  Alt 27. Jan 2019, 10:45
Zitat:
SendMessage wartet (d.h. blockiert) so lange, biss die Nachricht auf der Gegenseite (wer immer das auch ist) bearbeitet wurde.
PostMessage schickt die Nachricht los und kehrt gleich zurück.
Habe dir eine PN geschickt.. will nicht wieder gebannt werden!

Zitat:
Wenn ich's richtig gesehen habe hast du dieses Muster in deinem Code:
Hat seine Richtigkeit und nichts mit meinem Problem zu tun.

gruss

Geändert von EWeiss (27. Jan 2019 um 11:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:07 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-2025 by Thomas Breitkreuz