![]() |
EINFACHSTES Delphi-Programm blockiert Betriebssystem
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:
Wenn ich auf Button1 klicke, reagiert mein Programm für die Zeit des Schleifendurchlaufs nicht. Das ist ok.
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 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 :lol: Dort passiert das nämlich nicht :roll: Da gibt's DoEvents. PS: Ein System.ProcessMessages hilft nicht, auch kein System.HandleMessage. Gibt's da noch mehr? |
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Was ich mich zuerst einmal Frage: Wofür um alles in der Welt brauchst Du so eine Schleife?
|
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Und bei Delphi gibt es Application.ProcessMessages ...
|
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Ich denke, er möchte nur drauf Hinweisen das der Taskscheduler von Windows für Vordergrundprogramme
optimiert ist. Ich denke er hat ein Server Taskscheduler erwartet, wo die Zeitverteilung effektiver läuft. |
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Aber wer das ständig über DoEvents bzw. Application.ProcessMessages oder ähnliches regelt, sollte vielleicht besser bei Basic bleiben :mrgreen:
|
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Zitat:
|
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Jetzt mal halblang.
Nicht immer alles aufs Betriebssystem schieben. Zu Euren Fragen. Zitat:
Zitat:
Zitat:
Zurück zum Thema. Debuggt doch mal die Schleife. Während des Debuggens nehmt ihr einfach mal den Finger von der F8-Taste und lasst das Programm zwar gestartet, aber nicht weiterlaufen. Dann Excel starten. Das MUSS funktionieren, tut es aber nicht! Und in VB funktioniert es nun einmal, kann ja auch nichts dafür. |
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Sleep(1)
|
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Zitat:
Zitat:
Zitat:
Wo auch immer Dein Problem liegt, auf meinem Laptop (Dual-Core, Vista Ultimate, Delphi 7 & RAD Studio 2007) kann ich es nicht nachvollziehen. ...:cat:... |
Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
Zitat:
Allein die Tatsach DASS du VB benutzt hast sagt aus, dass du entweder ein Lemming bist, der MSFT überall hinfolgt, oder eben nicht weißt was deine Programme wirklich machen. Das folgende Zitat zeigt, dass es letzteres ist: Zitat:
Es ist alles andere als überraschend, wenn andere Prozesse weniger Zyklen abkriegen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz