![]() |
Alternative Sleep
Hallo Leute,
Ich habe ein Programm geschrieben welches öfters auf Tastenanschläge, Öffnen von anderen Programmen usw. warten muss. Am Anfang hatte ich viele Sleeps die ich nach und nach durch Timer ersetzt habe. Allerdings konnte ich das nicht überall einsetzen. Jetzt passiert es das man Programm im Sleep ab und zu abstürzt. Blöd am Sleep ist auch das das Programm solange schläft. Was ist eine gute alternative zu sleep? |
Re: Alternative Sleep
Kannst du bitte mal genauer erklären, wieso du auf Tastendrücke warten musst, und wieso du das Öffnen einer Datei mit sleep verzögern musst?
|
Re: Alternative Sleep
-> Java Applikation. Das Programm nimmt den Postmessage an, braucht aber eine gewisse Zeit um ihn durchzuführen. Und das gleiche bei dem Start der Java Applikation. Die Sandbox ist ist schon da (und damit das HWND) aber die Inhalte der Sandbox nicht.
|
Re: Alternative Sleep
So wie ich das verstanden habe willst du deine eigene Sleep-Funktion programmieren? Ich würds so machen:
Delphi-Quellcode:
Edit: Ich sehe grade, das Programm darf nicht schlafen, ich weiss nicht ob da in "ProcessMessages" reicht!
procedure MySleep(milliseconds: Integer);
var a,b,c: int64; begin QueryPerformanceFrequency(a); QueryPerformanceCounter(b); repeat Application.ProcessMessages; QueryPerformanceCounter(c); until milliseconds = (c - b) * 1000 div a; end; end; Edit2: Code etwas verschönert |
Re: Alternative Sleep
Ich werfe mal
![]() |
Re: Alternative Sleep
@ Clemens
So etwas ähnliches habe ich bereits probiert. Allerdings fällt die Applikation dann auch in einen "Tiefschlaf". Wie sieht das denn aus wenn man so etwas macht:
Delphi-Quellcode:
Den Timer dann auf z.b. 1 Sekunde stellen und danach sich selber disablen lassen?
Timerxx.Enabled:=TRUE;
While Timerxx.Enabled = True do begin end; Ist so etwas "elegant" oder wie Sleep eher eine Funktion die die Applikation sperrt? Beim Sleep habe ich ja auch das Problem das wenn ich einen längeren Sleep habe ich auch den Rest den Programms nicht mehr bedienen lassen. @DeddyH: wäre so etwas nicht dem ähnlich was Clemens probieren will? ICh hatte den Thread auch schon gefunden und aufprobiert. Aber trotzdem gibt es während des "Delay" einen Lag in der Applikation. |
Re: Alternative Sleep
Zitat:
Sowas sollte man per Events steuern. Für Tastendrücke kannst Du OnKeyDown oder OnKeyPress des Formulars verwenden. Falls auch auf Tastendrück ausserhalb Deines Programmes reagiert werden soll, kannst Du einen Tastaturhook einbauen. Mehr dazu findest Du mit der Forumssuche mit Stichwort "Hook". Auf das Öffnen anderer Programme kann man bestimmt auch informiert werden. Musst halt mal google bemühen. Auf jeden Falls solltest Du das mit sleep und Timer nochmal überdenken. |
Re: Alternative Sleep
Zitat:
|
Re: Alternative Sleep
Zitat:
Edit: Ohne es getestet zu haben, aber ich glaube nicht das bei meinem Code der Prozess in einen Tiefschlaf fällt. :| Hast du es schon getestet? |
Re: Alternative Sleep
Zum Öffnen anderer Programme kannst Du mal hier lesen:
![]() Hättest Du aber bestimmt auch über die Suche gefunden. Stichwörter: "start nachricht" |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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