Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm blockiert ganz Windows (https://www.delphipraxis.net/175533-programm-blockiert-ganz-windows.html)

Gruber_Hans_12345 3. Jul 2013 13:26

AW: Programm blockiert ganz Windows
 
Zitat:

Zitat von Captnemo (Beitrag 1220522)
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.



Aber das problem ist ja nicht das diese Datenbank Komponente so lange braucht - das PASST ja, es dauert nun mal eine gewisse zeit die JOINS zu machen und dann 100tausende Datensätze auf einmal zu holen (Und ja die werden alle auf einmal benötigt, da die in eine PivotTabelle geladen werden, und da gibts kein nachladen)

Das geht ja in Ordnung ich weiss wo es lange dauert und auch warum

-> die Frage ist nur warum der Desktop von Windows dann einfriert in der Zeit!

Luckie 4. Jul 2013 17:45

AW: Programm blockiert ganz Windows
 
Zitat:

Zitat von EWeiss (Beitrag 1220323)
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?

Wenn man nicht explizit an den Prioritäten dreht natürlich, das meinte ich mit dem Unmöglich.

EWeiss 4. Jul 2013 18:37

AW: Programm blockiert ganz Windows
 
Habe solche probleme schon des öfteren feststellen müssen..
Nach einem Neustart des Systems blockiert beim ersten start von D2010 die initialisierung
das komplette System keine Maus der irgendwelche eingaben sind dann noch möglich.
Behoben wurde das mit dem IDEFix irgendwo von hier.

Beim ersten Start von Adobe Photoshop lastet die suche nach den Fonts
auch das komplette system aus selbe problem wie oben.

Du stehst also nicht alleine da. :)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.
Seite 5 von 5   « Erste     345   

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