Einzelnen Beitrag anzeigen

little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

EINFACHSTES Delphi-Programm blockiert Betriebssystem

  Alt 14. Dez 2007, 15:23
Hi,

erstmal Entschuldigung für den reißerischen Titel..
Jawohl, ich wollte provozieren!

Spaß beiseite ich bin wirklich ratlos.
probiert mal folgendes... Neues Programm, 1 Button rein und dessen Klickevent folgenden Code zuweisen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
// Kreiert nix weiter als eine Schleife, die ca. 30 Sekunden läuft.
        var i: integer;
                j: integer;
begin
        i:= 0;
        j:= 0;
        while i<100000000 do
        begin
                j:=0;
                while j<300 do // bei langsamen Systemen eben ein bisschen weniger.
                begin
                        inc(j);
                end;
                inc(i);
        end;
        showmessage('fertig');
end;
Wenn ich auf Button1 klicke, reagiert mein Programm für die Zeit des Schleifendurchlaufs nicht. Das ist ok.
Wenn ich aber mal mein Programm während der Zeit, in der die Schleife durchläuft, links liegen lasse und in Windows z.B.
Start->...->Office->Excel anklicke, dann verzögert sich der Start von Excel immer über 15 sekunden, manchmal sogar so lange bis die Schleife komplett durchlaufen ist.

Andere Programme wie z.B. Firefox starten problemlos.
Es kann doch nicht sein dass in einem Multitasking-System solche banalen Algoritmen den Rest des Systems beeinträchtigen können?!

Außerdem - Während der Zeit des Schleifendurchlaufs ist immer noch ein Leerlaufprozess da mit 30% CPU-Ressourcen, außerdem DualCore... Also kanns auch nicht am ausgelasteten CPU liegen.

Außerdem II - Während ich die Schleife debugge, ist die Prozessorauslastung überhaupt nicht merklich beeinträchtigt und das Problem besteht dennoch.

Weiß jemand Rat? Oder soll ich zu VisualBasic zurückgehen Dort passiert das nämlich nicht Da gibt's DoEvents.

PS: Ein System.ProcessMessages hilft nicht, auch kein System.HandleMessage. Gibt's da noch mehr?
manchmal machts mich mürbe
  Mit Zitat antworten Zitat