![]() |
App hängt -> Windows tod
Hallo,
Ich habe folgendes Problem, ich habe ein sehr großes Projekt, und und wenn ich in der EXE Datei eine Endlosschleife habe zum Testen habe ich einen primitiven Button mit folgendem Code:
Delphi-Quellcode:
Dann blockiert mein Programm, was ja klar ist.
while(TRUE) do sleep(1);
ABER: In dieser einen EXE hängt dann das ganze Windows (getestet mit unterschiedlichen Windows System, Window 7 64Bit, Windows 8.1 64 Bit) Das sieht dann folgender masen aus. In meiner Anwendung steht dann in der Titelleiste ein zusätzliches (Keine Rückmeldung) Wenn ich versuche mit Alt-Tab auf eine andere Anwendung umzuschalten, dann bekmme ich die liste der offenen Fenster angezeigt, aber es wird nicht umgeschaltet auf das nächste Fenster und ein zweiter klick mit Alt-Tab hat keinerlei wirkung ... Der Taskmanager lässt sich öffnen, aber je nach Windows - kann es sein das er gar nicht reagiert ... Wenn ich den selben Code 1:1 in ein neues Projekt reinkopiere starte und ausführe - dann passiert genau das was ich erwarte Die Anwendung hängt, hat aber keinerlei auswirkung auf irgendwelche anderen Programme oder Windows selbst. Wo nach muss ich hier nun suchen? |
AW: App hängt -> Windows tod
Vielleicht wird irgendwo die Priorität des Prozesses verändert? Wenn die höher ist und du nur einen Single-Core Prozessor hast (soll es ja noch geben), bleibt für Windows vielleicht nicht genug übrig.
Das sollte dir aber der Taskmanager ab Windows 8 sagen und vorher der kostenlose Process Monitor. |
AW: App hängt -> Windows tod
nein daran liegts definitiv nicht
|
AW: App hängt -> Windows tod
Laufen noch zusätzlich Timer oder Threads?
|
AW: App hängt -> Windows tod
Ja ziemlich sicher
Timer sind sicher einige drinnen -> aber die dürften ja nix bekommen, sobald der Hauptthread durch ne endlosschleife blockiert ist oder? Und laut Taskmanger sind es 9 Threads (Vermute durch Indy komponenten und sonstige zusätzlichen Komponenten) |
AW: App hängt -> Windows tod
Ich habe nun mal zum testen von eurekaLog diese Tools runtergeladen
DA ist ein ThreadSnapshot Tool dabei Wenn ich das starte und mir die infos von meiner Anwendung raushole lassen wenn die normal läuft dann geht das Sobald meine Anwenung in der Endlos while schleife hängt, Kann dieses ThreadSnapshot auch nix mehr machen und hängt oder bringt nen fehler ... |
AW: App hängt -> Windows tod
Sehr wahrscheinlich hast Du ja die Endlos-Schleife in einen Event eingehangen. In welchen? Könntest Du nicht den kompletten Code posten, dann könnten wir auch mal testen.
|
AW: App hängt -> Windows tod
In einem 08/15 Button Click
wie gesagt da gleiche in einer primitiven Anwendung funktioniert ja so wie ich es erwarte -> Nur die Anwendung hängt und hat keinen Einfluss auf andere Apps oder Windows selbst |
AW: App hängt -> Windows tod
Ok, beim Click muss der Button neu gezeichnet werden. In diesem Zuge soll meist auch der Hintergrund neu gezeichnet werden. Was liegt im Hintergrund? Ein Panel, ein Formular, ...?
|
AW: App hängt -> Windows tod
ist ein normales Panel, nur damit hat es ja nichts zu tun ...
Mir ist ja klar das das programm dann hängt wenn ich ne endllosschleife mache -> das macht mir ja eh nix aus, nur das dadurch das ganze Windows zum einfrieren kommt ist mein problem! Und im normalen Betrieb gibt es eh keine endlosschleifen, aber sehr wohl längere Funktionen von paar skeunden bis zu ner minute, und in der zeit sollte halt das restliche windows normal laufen können! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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