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 4 von 5   « Erste     234 5      
Gruber_Hans_12345

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

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 19:59
Nach meiner Erfahrung treten solche Effekte unter Windows7 dann auf, wenn eine Komponente den Explorer nutzt, und eine Ereignisbehandlung länger dauert. Ein Beispiel ist der DateTimePicker. Wenn man hier in den OnChange-Event folgendes einhängt

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  Sleep(10000)
end;
dann hängt nach der Änderung des Datums der gesamte Desktop für 10s. Das liegt daran, dass der Explorer als zentrale Bedienoberfläche für 10s blockiert ist. Bei anderen Komponenten (z.B. TEdit) ist ein solches Verhalten nicht zu beobachten.
Das muss ich morgen gleich mal probieren, ob es genau das verhalten ist, was ich bei meinem Programm auch festegestellt habe
Wie gesagt es sieht bei mir auch aus wie wenn "nur" der Desktop hängt
Gruss Hans

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

n/a Beiträge
 
#32

AW: Programm blockiert ganz Windows

  Alt 1. Jul 2013, 20:09
Zitat:
Das ist unmöglich. Es sei den du gibst deinen Prozess die höchste Priorität
Dann widersprichst du dir selbst!
Erst unmöglich und dann doch?

Na egal... sollte mich vielleicht etwas mehr zurückhalten.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 09:14
Das passiert beim Open einer Query?
Dann mach davor doch davor ein DisableControls und danach ein EnableControls. Dazwischen vielleicht noch ein Application.ProcessMessages.

Ich kann mir nicht vorstellen, dass das Open den Rechner derartig ausbremst, aber die verbundenen Controls können schon einen ganze Menge verursachen.
Peter
  Mit Zitat antworten Zitat
Gruber_Hans_12345

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

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 09:42
Das passiert beim Open einer Query?
Dann mach davor doch davor ein DisableControls und danach ein EnableControls. Dazwischen vielleicht noch ein Application.ProcessMessages.

Ich kann mir nicht vorstellen, dass das Open den Rechner derartig ausbremst, aber die verbundenen Controls können schon einen ganze Menge verursachen.
nein, es sind gar keine Controls verbunden, das ist nur eine Query die eine PivotTabelle befüllt
aber braucht dafür natürlich sehr lange zum öffnen ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#35

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 10:41
nein, es sind gar keine Controls verbunden, das ist nur eine Query die eine PivotTabelle befüllt
aber braucht dafür natürlich sehr lange zum öffnen ...
Wenn das "open" lange braucht, dann hat der DB-Server gut zu tun. Da der aber auf einer ganz anderen Maschine sitzt sollte das ****egal sein.
Wenn Du dann die Daten abholst könnte es etwas Last geben.
Das beschriebene Verhalten finde ich sehr seltsam.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Gruber_Hans_12345

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

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 10:58
Nach meiner Erfahrung treten solche Effekte unter Windows7 dann auf, wenn eine Komponente den Explorer nutzt, und eine Ereignisbehandlung länger dauert. Ein Beispiel ist der DateTimePicker. Wenn man hier in den OnChange-Event folgendes einhängt

Delphi-Quellcode:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  Sleep(10000)
end;
dann hängt nach der Änderung des Datums der gesamte Desktop für 10s. Das liegt daran, dass der Explorer als zentrale Bedienoberfläche für 10s blockiert ist. Bei anderen Komponenten (z.B. TEdit) ist ein solches Verhalten nicht zu beobachten.
Das muss ich morgen gleich mal probieren, ob es genau das verhalten ist, was ich bei meinem Programm auch festegestellt habe
Wie gesagt es sieht bei mir auch aus wie wenn "nur" der Desktop hängt
Also das hätte ich gerade getestet, da hängts bei mir nicht, zumindest nicht in nem kleinen testprogramm nicht -> nur das Programm selbst natürlich, aber der Rest Desktop und co gehen noch
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
 
#37

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 11:19
Also hab gerade ein kleines Testprogramm geschrieben, mit dem ich das ganze nachstellen wollte -> und siehe da
in dem Testprogramm bleibt der Desktop aktiv -> also keine Probleme, und nur mein kleines Testprogramm hängt

Also muss es irgendeinen nebeneffekt von meinem Hauptprogramm sein (Aber das sind leider schon doch ein paar zeilchen ... )
Gruss Hans

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

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#38

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 11:39
Bist du sicher, dass du nirgends SetPriorityClass verwendest?
Durchsuche mal den gesamten Code danach... Unter umständen auch den Code deiner Fremdcontrols (falls du den Code hast)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

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

AW: Programm blockiert ganz Windows

  Alt 2. Jul 2013, 11:53
Bist du sicher, dass du nirgends SetPriorityClass verwendest?
Durchsuche mal den gesamten Code danach... Unter umständen auch den Code deiner Fremdcontrols (falls du den Code hast)
Nix gefunden aber auch ein SetPriorityClass dürfte doch nur dann den einen Prozessor beeinflussen oder?
Ich habe ja nur 25% CPU Last auf das gesammte System gesehen in dem Fall ..
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#40

AW: Programm blockiert ganz Windows

  Alt 3. Jul 2013, 09:30
Wenn ich deinen ersten Post lese, dann steht da:

Zitat:
(zb per IBX Daten abruft, oder einfach ne große schleife, wo was gemacht wird
was ist denn mit der großen Schleife? Hast du da mal mir Application.ProcessMessages experimentiert?
Manchmal ist es bei solchen Sachen auch ganz hilfreich, wenn man sich eine Logdatei mitschreibt und quasi jeden Schritt eine Zeitaufwendigen Funktion mit einem Zeitstempel mitloggt. So kann man dann explizit die verursachende Zeile finden.

Delphi-Quellcode:
procedure log(s: string);
var
  tc, tdiff: Cardinal;
  f: Textfile;
  logfile: string;
begin
  tc:=GetTickCount;
  tdiff:=tc-stc;
  logfile:=extractfilepath(application.exefile)+'log.txt';
  Assingfile(f, logfile);
  if fileexists(logfile) then append(f) else rewrite(f);
  writeln(f, inttostr(tdiff)+' '+s);
  closefile(f);
  application.processmessages;
end;
Das hab ich mal so aus dem Kopf hier geschreiben. Also wenn Fehler drin sind, reißt mir nicht den Kopf ab.

in der unit noch die stc: Cardinal deklarieren.
Und am begin der fraglichen Funktion stc:=gettickcount;
und dann nach bedarf ein log('jetzt wir SQL.open ausgeführt'); setzen.

Hinterher kannst du in der Logdatei recht genau sehen, wo die Zeit verbraten wurde. Möglicherweise hilft das bei der Ergründung des Problems.

Wenn's sinnvoll ist, dann kann man auch noch andere Variablen mit übergeben und loggen, damit man ggf. auch auf unlogische Daten oder so prüfen kann.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo ( 3. Jul 2013 um 09:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 14:14 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