Forum: Sonstige Fragen zu Delphi
Delphi
by jaenicke,
1. Feb 2024
You are right, but those optimization details do not match the problem. The problem is, that the main thread is blocked. So a timer won't work better.
As I wrote there are only two possibilities:
- A bigger refactoring, which includes moving the long running operations to a background thread. Of course this can be a really big task.
- Or using a status window, which runs in its own thread,...
Forum: Sonstige Fragen zu Delphi
Delphi
by jaenicke,
1. Feb 2024
Wenn du da nicht ran möchtest, bleibt dir nur der Weg über ein Fenster, das außerhalb des Hauptthreads läuft. Da sollte die MTCL in der aktuellen Form schon reichen. Eine Textanzeige und eine ProgressBar hat sie drin.
Forum: Sonstige Fragen zu Delphi
Delphi
by jaenicke,
1. Feb 2024
Der Aufruf passierte laut Stacktrace 67 Zeilen weiter unten ab dem begin des Execute gezählt. Da ist im geposteten Quelltext ein end. Da müsstest du noch einmal schauen, was dort vorher stand.
Und wenn nun ohne ProcessMessages die Anwendung hängt... sieht der Bugreport noch genauso aus? Dein Timer nutzt ja nicht immer Synchronize. Kann es vorkommen, dass es ohne aufgrufen wird und dort etwas...
Forum: Sonstige Fragen zu Delphi
Delphi
by jaenicke,
30. Jan 2024
Da hast du Recht. Man muss es auch verwenden, wenn man sicherstellen will, dass die Nachricht angekommen ist.
Forum: Sonstige Fragen zu Delphi
Delphi
by jaenicke,
30. Jan 2024
SendMessage sollte man ausschließlich verwenden, wenn es wichtig ist, dass die Nachricht abgearbeitet ist, bevor der nachstehende Code ausgeführt wird (z.B. wegen des Rückgabewerts). Ansonsten sollte man immer PostMessage verwenden, das nicht hängen bleibt, egal was bei der Abarbeitung passiert.