AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm blockiert ganz Windows

Ein Thema von Gruber_Hans_12345 · begonnen am 29. Jun 2013 · letzter Beitrag vom 4. Jul 2013
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

Programm blockiert ganz Windows

  Alt 29. Jun 2013, 01:42
Hi

Hab mal eine Frage, an was liegt es, dass mein Programm, wenn es etwas tut (zb per IBX Daten abruft, oder einfach ne große schleife, wo was gemacht wird)
Dass das ganze Windows hängt?

Der Taskmanager zb geht nur kurz auf, und das wars, Programme umschalten mit Alt Tab geht auch nicht mehr, aber wenn ein Texteditor offen ist, dann kann man in dem nach schreiben, wenn man den bereich noch gesehen hat vorher.

Wenn mein Programm mit der Ausführung fertig ist dann geht wieder alles ganz normal.

Wo kann ich da zum suchen anfangen?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 07:03
Windows ist ereignisorientiert. Ereignisse erzeugen Messages. Während eines Schleifendurchlaufs werden keine Messages abgearbeitet, wenn du das nicht in dein Programm einbaust. Füge dazu in deiner Schleife mindestes ein Application.ProcessMessages ein und du wirst sehen, daß dann wieder alles abgearbeitet wird. Alternativ kannst du solche Schleifen auch in einen Thread auslagern, was für Anfänger gewöhnlich jedoch zu hohe Anforderungen stellt.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 09:22
Ganz blockieren ist eigentlich nicht möglich. Aber im Zusammenhang mit hoher Festplattenlast + Virenscanner kann die Verarbeitung schon sehr verzögert werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 09:32
Ganz blockieren ist eigentlich nicht möglich. Aber im Zusammenhang mit hoher Festplattenlast + Virenscanner kann die Verarbeitung schon sehr verzögert werden.
Du hast sicher recht damit, für den gemeinen Anwender erscheint das aber schon so. Ich hab das selber schon oft erlebt, z.B. wenn ich einmalig größere Datenmengen zwischen Datenbanken kopiere (z.B. beim Umstieg auf ein anderes DBMS) und vor oder nach dem Next in der While Not Dataset.Eof-Schleife mal wieder Application.ProcessMessages vergessen habe. In solchen Fällen kannst du mit deinem Windows kaum noch arbeiten, obwohl natürlich hin & wieder die eine oder andere Message gaaanz laaangsaaam verarbeitet wird

Da hilfts auch nicht, im Taskmanager die Priorität des Prozesses zu verringern ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 10:36
Windows ist ereignisorientiert. Ereignisse erzeugen Messages. Während eines Schleifendurchlaufs werden keine Messages abgearbeitet, wenn du das nicht in dein Programm einbaust. Füge dazu in deiner Schleife mindestes ein Application.ProcessMessages ein und du wirst sehen, daß dann wieder alles abgearbeitet wird. Alternativ kannst du solche Schleifen auch in einen Thread auslagern, was für Anfänger gewöhnlich jedoch zu hohe Anforderungen stellt.
Ich dachte mir das Application.ProcessMessages brauche ich in den SChleifen nur damit MEIN programm noch refresht wird und reagiert

In meinem Fall reagieren der Task Manager und das umsachalten IM WINDOWS mit zb "Alt Tab" gar nicht mehr
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 10:40
Ganz blockieren ist eigentlich nicht möglich. Aber im Zusammenhang mit hoher Festplattenlast + Virenscanner kann die Verarbeitung schon sehr verzögert werden.
Nein, Festplattenlast gibts in dem Fall fast gar nicht, es wird zB.: einfach eine richtig große Datenmenge vom Firebird Server geholt .... in der Zeit blockiert natürlich mein Programm

ABER eben auch die anderen Programm bzw eigetnlich nur das Windows System ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#7

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 10:41
Seit WindowsXP braucht ja Windows keine aktive Freigabe von Prozessorzeit durch den Entwickler.

Aber seltsamer weise gibt es doch immer wieder Dinge die Windows enfrieren lassen können. z.b.
wenn man sich auf einem Netzwerklaufwer zum erstenmal verbindet.
Oder wenn man in der Kommandozeile eine Konsolenanwendung aus einem Netzwerklaufwerk heraus startet.
Oder wenn man im Explorer auf die Netzwerkressourcen klickt und er sucht....alles friert ein.
Außer der Maus.

Ich hasse das...
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 10:47
Ich dachte mir das Application.ProcessMessages brauche ich in den SChleifen nur damit MEIN programm noch refresht wird und reagiert
Es ist, wie ich es oben beschrieben habe: Dein Programm blockiert die Messages, wenn du sie nicht abarbeitest. Messages werden in Windows reihenweise an alle Tasks quasi "durchgereicht" (stimnt nicht ganz, denn eigentlich landen Messages einfach in der Message-Queue). Wenn das Ziel einer Message nicht der Task ist, für den die Message bestimmt ist, dann kriegt sie der nächste Task, um zu prüfen, ob sie für ihn ist. Auf diese Weise kann jedes Programm auch Messages, die für andere Programme bestimmt sind, abfangen und darauf reagieren.

Alles, soweit mir bekannt, ich kann mich auch irren ...

In meinem Fall reagieren der Task Manager und das umsachalten IM WINDOWS mit zb "Alt Tab" gar nicht mehr
Na dann bau halt mal, wie empfohlen, Application.ProcessMessages in deine Schleife ein.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 10:56
Nein, Festplattenlast gibts in dem Fall fast gar nicht, es wird zB.: einfach eine richtig große Datenmenge vom Firebird Server geholt .... in der Zeit blockiert natürlich mein Programm
ABER eben auch die anderen Programm bzw eigetnlich nur das Windows System ...
Wenn dein Firebird-Server auf demselben BS läuft wie deine Anwendung, dann entsteht selbstverständlich ausgiebiger Festplattenzugriff beim Einlesen großer Datenmengen in den Speicher. Da du aber nur selten eine riesige Datenmenge im Speicher zur Verfügung haben mußt, solltest du deine Datasets so einstellen, daß eben nicht alles geholt wird. Bei mir mit IbDac stelle ich dazu das Property FetchAll auf False. Bei großen Datenmengen entsteht z.B. auch beim Setzen von IndexFieldNames (sortieren) eine hohe Prozessorlast ...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: Programm blockiert ganz Windows

  Alt 29. Jun 2013, 11:22
Und nicht vergessen, Windows hat eine Auslagerungsdatei und die wird benutzt, auch wenn noch Speicher frei ist. Und das gibt Festplattenzugriff in nicht zwingend unerheblichem Maße. Auch dann, wenn die Daten von einem X-beliebigen anderen Datenbankserver geholt werden.

Schau doch mal, nach Einbau von Application.ProcessMessages in der Schleife, im Taskmanager nach, ob und wie sich die Nutzung des virtuellen Speichers Deines Programmes ändert. Dann siehst Du, ob auf die Festplatte zugegriffen wird.
Und schau mal, ob sich die Anzahl der Seitenfehler verändert, dann wird Speicherinhalt aus der Auslagerungsdatei in den Arbeitsspeicher geholt. Und dahinter stecken Festplattenzugriffe. Ggfls. werden andere Programme aufgefordert Speicher freizugeben oder der Speicherinhalt anderer Programme wird von Windows in die Auslagerungsdatei verschoben, auch da stecken Festplattenzugriffe hinter.

Wenn man sehr viel Arbeitsspeicher hat, kann man mal den Versuch starten, Windows ohne Auslagerungsdatei zu konfigurieren. Gerade bei Datenbankanwendungen habe ich wiederholt die Erfahrung gemacht, dass sie dadurch deutlich beschleunigt werden können.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz