Hallo zusammen,
ich bräuchte mal etwas Schützenhilfe bei einem Problem.
Ich habe ein Tool mit einem optional aktivierbaren Timer. Dieser Timer dient als Zeitcounter um z.B. alle 30 Sekunden eine Funktion aufzurufen welche dann diverse Jobs erledigt. Diese Funktion habe ich schon seit Jahren so im Einsatz. Jetzt vermehren sich plötzlich bei den ein oder anderen Anwender meines Tools ein seltsamer Effekt. Die Programmoberfläche lässt sich nicht mehr bedienen, reagiert auf keinen Klick mehr. Das Programmmenü ist nicht mehr bedienbar und das Programm lässt sich auch nicht mehr über das Taskicon beenden. Wird das Programm neu gestartet > gleiches Verhalten. Allerdings läuft der Timer nach wie vor im Hintergrund und verrichtet seinen Dienst, das Tool macht also alles was es soll, ich kann nur die Oberfläche nicht mehr bedienen.
Deaktiviere ich dann den Timer über die gespeicherten Einstellungen (ini-Datei) und starte das Programm neu, reagiert es ganz normal.
Dieses Verhalten habe ich aktuell bei 2 oder 3 Anwendern. Ich finde allerdings keinen Auslöser für dieses Verhalten. Hat hier vielleicht jemand eine Idee wo ich ansetzen kann um den Auslöser zu finden?
Delphiversion: 11.3
32-bit Anwendung
Betriebssystem bei den Anwendern ist Windows 11 Pro (64-bit)
Vielen Dank im Voraus.
First and foremost, don't use ProcessMessage
Now to suggestion
1) Are you using any sort of logging ? just log events and you can time the jobs triggered by the Timer, also the time spend on every job, this logging can be enabled and disabled from command line parameter, or any other method, but with command line you don't need to wait for application settings to be loaded, as loading settings might also be problematic or broken in specific user case.
2) Do you have a clear logic to
handle, recover or coup, when and if one of these jobs takes longer than the Timer interval ?
3) Try to reproduce this by decreasing the interval to 30ms instead of 30 second, this might reveal problems on your side, also put some jobs to sleep for long time, then build your logic with that in mind.
4) is there a hidden error message ? like failed to be visible to the user or even to render ? also logging here.
That what comes to mind at this moment, and hope it helps.