AW: Programm blockiert ganz Windows
Zitat:
weil das ja nur ein sql.open ist was die ganze arbeit macht.... mich störts ja nicht das mein programm einfriert - aber warum der ganze rechner.... |
AW: Programm blockiert ganz Windows
Zitat:
Vielleicht sollte man die Abfage optimieren |
AW: Programm blockiert ganz Windows
Zitat:
|
AW: Programm blockiert ganz Windows
Zitat:
Selbst die billigesten PCs (Netbooks) haben schon zwei Kerne. Der normal-PC hat 4-8 Kerne. Ein einfaches Programm dieser Art wird den Prozessor nicht auslasten können. |
AW: Programm blockiert ganz Windows
Einen Tipp habe ich nicht aber...
Ich kenne ein ähnliches Verhalten unter Win7 gelegentlich vom InternetExplorer bzw. beim öffnen mehrerer Register. Nach einigen Sekunden läuft es dann wieder. Außerdem reagiert das System gelegentlich nicht mehr auf MouseOver und MouseClick (laufende Programme aber schon). Es hilft dann der Affengriff und zwei Klicks auf abbrechen. Der erste bringt die Mauserkennung zurück, der zweite schließt die Systemebene. |
AW: Programm blockiert ganz Windows
Hier rumzurätzeln warum das so ist bringt einfach nichts.
Fakt ist jedoch wenn du anderen Prozessen nicht die möglichkeit gibst weiterarbeiten zu können hält das System nun mal (scheinbar)an bis dein prozess beendet ist. Das ist einfach ein schlechter Programmierstil. Die lösung ist doch einfach. Blockiere nicht die Prozesse anderer Awendungen und gut ist. Kann ich nicht.. gibt es nicht. Das hilft immer
Delphi-Quellcode:
Wer also will dir verbieten dafür zu sorgen das andere prozesse ihren Dienst verrichten können
procedure WinProcessMessages;
// Allow Windows to process other system messages var ProcMsg: TMsg; begin while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do begin if (ProcMsg.message = WM_QUIT) then Exit; TranslateMessage(ProcMsg); DispatchMessage(ProcMsg); end; end; FireBird ? :lol: gruss |
AW: Programm blockiert ganz Windows
mir war das einfach absolut neu, das wenn ich in mienem Programm die Message nicht verarbeite das dann alle anderen Programme dadurch in mittleidenschaft gezogen werden.
Aber das Problem, ist trotzdem ich habe leider auch Komponenten von mir, die einfach sehr sehr lange zum verarbeiten brauchen (zum Beispiel PivotTabellen, die rieseige Datenmengen verarbetien) und da kann ich nicht einfach rumwerklen im sourcecode, und dort ne message loop einbauen. Genau so schwer wird es sein das in nen Thread auszulagern, da diese Komponente natürlich auch grafisch ist ... und die GUI braucht (die ja nicht thread sicher ist) |
AW: Programm blockiert ganz Windows
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:
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.
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin Sleep(10000) end; |
AW: Programm blockiert ganz Windows
Zitat:
|
AW: Programm blockiert ganz Windows
Ja ist ein total komisches verhalten vom System
Und es ist total egal welche Priorität ich meinem Programm gebe - hohe oder niedrige - das hat keinen einfluss! Wenn das programm sperrt, dann kann ich Alt-Tab drücken es kommt das schöne fenster mit den Vorschaubildern der aktiven Programmen, aber es bleibt beim ersten Fenster stehen, also ein weiteres Alt-Tab geht nicht mehr Die Vorschaubilder bleiben auch solange stehen bis mein programm fertig ist Wenn ich im hintergrund bei einer anderen Anwendung was rumschreibe oder so, dann sehe ich das sogar in den kleinen Vorschaubildern automatisch refresht! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 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