Hallo,
nach welchen Kriterien wird unter Windows 7 entschieden wann ein Programm „ausgestiegen“ ist (Anwendung reagiert nicht mehr und muß geschlossen werden) und kann man das als User beeinflussen?
mfG
bonsai
Hallo,
nach welchen Kriterien wird unter Windows 7 entschieden wann ein Programm „ausgestiegen“ ist (Anwendung reagiert nicht mehr und muß geschlossen werden) und kann man das als User beeinflussen?
mfG
bonsai
Hi,
das kann sehr viele Gründe haben, als User kannst du sie eigentlich nie beeinflussen.
Hier eine Liste aller Fehlercodes: http://msdn.microsoft.com/en-us/library/windows/desk…
Lg Knerd
Hallo!
Man muss zwischen 2 unterschiedlichen Konstellationen unterscheiden:
Im ersten Fall verarbeitet das Programm über einen gewissen Zeitraum hinweg keine Windows-Nachrichten. Das kann sich wieder geben (wenn das Programm entsprechend programmiert ist und aufgrund einer lang laufenden Aktion, bspw. Netzwerkzugriff, mehrere Sekunden blockiert wird, es danach aber ganz normal weitergeht) oder auch nicht (dann wartet man ewig und 3 Tage, bis sich wieder etwas tut).
Der Anwender kann in dieser Situation i.d.R. nichts tun, weil er meistens nicht weiß, was das Programm in diesem Moment gerade so macht und deswegen auch nicht Einfluss auf diese Funktionalität nehmen kann.
Wenn das Programm erst mal im Modus „reagiert nicht“ (auf Dauer) ist, bekommt man es als Anwender auch nicht mehr raus - Abschießen ist die einzige Möglichkeit.
Im zweiten Fall ist im Programm irgendeine Situation aufgetreten, mit der der Entwickler nicht gerechnet hat und die nun aber doch eingetreten ist.
Das kann alles mögliche sein, von fehlerhafter Benutzereingabe bis zu Hardwaredefekten. Was es genau ist, bekommt man mit etwas Glück über die Art der Exception heraus. Hier ist die Chance, durch andere Bedienung des Programms um die Ausnahme herumzukommen, höher als bei #1, eine Garantie gibt es aber auch da nicht.
Gruß,
Martin
Hi,
Wenn das Programm erst mal im Modus „reagiert nicht“ (auf
Dauer) ist, bekommt man es als Anwender auch nicht mehr raus -
Abschießen ist die einzige Möglichkeit.
Das stimmt nicht ganz, einige Programme, „wachen“ selbst aus diesem Modus wieder auf.
Lg Knerd
Hallo!
Welche Programme meinst Du diesbezüglich?
Wenn ein Programm wieder „aufwacht“, dann bedeutet das, dass die lang laufende Aktion im UIThread beendet wurde (bspw. auch mit einem Timeout).
Meistens ist es aber so, dass bei Programmen, die gar nicht mehr reagieren (auch nach 1-2 Minuten nicht mehr) sie deswegen nicht mehr reagieren, weil irgendwo ein Warten auf ein Synchronisationsereignis durchgeführt wird, dieses Ereignis aber niemals ausgelöst wird.
Oder das Programm hängt in einer Endlosschleife und kommt deswegen nicht dazu, Windows-Nachrichten zu verarbeiten.
Als Anwender hat man in beiden Fällen keinen Anhaltspunkt, was notwendig wäre, um das Programm zum Weiterlaufen bewegen zu können.
Gruß,
Martin
Hi,
den Fall hatte ich bereits bei diversen selbstgeschriebenen Programmen aber auch beim IE, Adobe Reader, Office, Visual Studio und Programmen von Daz3D.
Lg Knerd
Und was hast Du dann gemacht, um das jeweilige Programm aus seinem „reagiert nicht“ wiederzubeleben?
LG,
Martin
Einfach gewartet, das Problem tritt meistens beim Start auf…
Lg Knerd
)
Wenn sich das Problem durch Warten „beheben“ lässt, dann ist es ja genau der Fall #1: Das Programm macht (beim Start, wenn es die Nachricht bekommen hat, dass das Hauptfenster nun sichtbar ist - sonst bekommt man auch kein „reagiert nicht“) irgendwas im UIThread, das länger als ein paar Sekunden dauert.
Solange das Programm/der UIThread in dieser Funktion ist, werden keine Windows-Nachrichten abgearbeitet.
Windows versieht jede Nachricht mit einem Zeitstempel, und sobald eine Nachricht an ein Fenster nicht innerhalb von 5 Sekunden abgearbeitet wird (bspw. weil die Anwendung gerade mit einem Netzwerkzugriff beschäftigt ist, der halt doch mal 7 Sekunden dauert), erzeugt der Fenstermanager diese „Reagiert nicht“-Anzeige.
Du kannst es u.a. hier: http://msdn.microsoft.com/en-us/library/dd744765%28v… nachlesen.
Gruß,
Martin