![]() |
Windows XP friert ein
Hallo Leute,
hat jemand von Euch schon mal was von einem Windows XP-Problem gehört? Meine Applikation (Delphi 4 Standard) läuft auf Windows 98, NT und Windows 2000 einwandfrei. Bei voller CPU-Auslastung (also nur, wenn der Rechner wirklich arbeiten muss) friert die Applikation auf Windows XP Professional aber ein, sobald man die Maus bewegt. Gibt es dafür vielleicht irgendwo einen Delphi- (oder Windows-)Patch? Gruß Arne :wiejetzt: |
Re: Windows XP friert ein
Hast du die Priorität deines Prozesses oder eines einzelnen Threads geändert?
|
Re: Windows XP friert ein
Hai Arne,
willkommen in der "Delphi-PRAXIS". Was friert denn jetzt ein? Delphi oder Windows-XP? Ist mir nicht so ganz klar geworden bei der Frage. |
Re: Windows XP friert ein
Um was für eine Applikation handelt es sich denn?
|
Re: Windows XP friert ein
Hi,
also du kannst mal probiern, während die Anwendung bzw. Windows hängt, STRG-ESCAPE zu drücken. Das sollte die StartLeiste öffnen, dein Programm in den Hintergrund rücken. Wenn das dann immer noch nicht geht, solltest du schaun, ob irgenwo Schleifen oder so nicht beendet werden ... :wall: devnull |
Re: Windows XP friert ein
Erst einmal vielen Dank für die zahlreichen Antworten. Ich werde mal chronologisch darauf antworten:
Zu Lucky: Ich habe keinerlei Prioritäten geändert. Das ist eine mit Delphi erstellte EXE, die auf allen Windows-Systemen wunderbar läuft, nur eben auf XP nicht. Zu Sharky: Weder noch. Meine mit Delphi erstellte Applikation friert ein und lässt sich nur noch mit STRG+ALT+DEL beenden. Reagiert auf gar nichts mehr. Zu The_Master: Es ist eine 0-8-15 Applikation. Noch nicht einmal Multi-Threading. Eine einfache EXE, die aber ganz hübsch etwas zu rechnen hat und die CPU zu 100% auslastet. Zu devnull: STRG+ESC habe ich noch nicht ausprobiert. Ehrlich gesagt weiß ich aber nicht, was das bringen soll. Ich möchte ja gerne, dass das auch auf XP läuft. Dass da noch so grobe Fehler drin sind wie nicht bendete Schleifen, glaube ich nicht. Dieselbe EXE läuft ja auf allen anderen Windows-Systemen wunderbar... |
Re: Windows XP friert ein
Hallo Arne,
ich denke, bei Deinem Problem ist eine Ferndiagnose sehr schwierig, eher schon unmöglich. Wenn Deine Applikation nicht sehr groß ist, bzw. Dein Code nicht "geheim" ist, könntest Du ihn ja mal anhängen, vielleicht findet sich jemand der ihn durchsehen kann. Ansonsten fällt mir nur noch ein Dich zu fragen, ob du Fremdkomponenten oder selbstgeschriebene Komponenten einsetzt, oder ob Du in den Tiefen der API-Programmierung wandelst. Eine andere Möglichkeit wäre, Deine Applikation in der Delphi IDE unter WinXP laufen zu lassen und im Debugger zu betrachten. Oder Du Verringerst sukzessive die Funktion Deines Programms, oder besser, Du kommentierst alle Berechnungen aus, und nimmst sie Schritt für Schritt wieder hinzu. Dazwischen machst Du den Test mit der Maus, bis wieder alles einfriert, möglicherweise findest Du so das "fehlerhafte" Modul. |
Re: Windows XP friert ein
Zitat:
|
Re: Windows XP friert ein
Wenn die Berechnung in einer Schleife erfolgt, ruf ab und an mal Application.Processmessages auf.
|
Re: Windows XP friert ein
Hi Leute,
die Applikation ist zu groß und viel zu komplex, um sie jemandem zur Durchsicht zu geben (hat was mit Graphentheorie und Genetik zu tun). Ich hatte halt die Hoffnung, Euch wäre ein solcher Bug bzgl. Delphi/ XP schon mal untergekommen. Nun ja, dann hilft nichts: Dann werd' ich wohl mal ab und an ein sleep und ein ProcessMessages einbauen und weitersehen. Vielleicht hilft das ja schon. Lustigerweise läuft es ja mit kleinen Datensätzen (also nur kurzzeitige 100% Belastung) und wenn die CPU nicht ausgelastet ist, läuft sowieso alles. Trotzdem vielen Dank, Arne :hi: |
Re: Windows XP friert ein
Hai Arne,
Sleep ist ganz schlecht. Denn ein Sleep hält den Thread in dem es aufgerufen wurde komplett an. Wenn Du eine Pause brauchst wäre ein Delay besser. Dafür gibt es einen Beispiel Code in der Code-Library. Wenn du für deine Berechnungen Schleifen hast wäre es sicher das beste dort mal ein Application.ProcessMessage einzufügen. |
Re: Windows XP friert ein
Zitat:
|
Re: Windows XP friert ein
Hi Arne,
hast Du auch schonmal dran gedacht, dass Deine Hardware Komponenten nicht zusammenpassen könnten ? Hast Du den Rechner selber zusammengebaut ? Läuft das Programm 3DMark 2003 eine Stunde lang durch ? Hintereinanderweg ? Wenn nicht, dann passt der Speicher nicht zum Board, oder falsche Steckplatzkartenbelegung. Vielleicht auch ein schlechtes Netzteil ... Klingt mir sehr danach, dass es ein Hardware Problem ist. Vor allen Dingen das einfrieren ist wiedermal typisch für sowas :-) |
Re: Windows XP friert ein
Öhm, stoxx, und das nur bei seinem Programm? :roll:
|
Re: Windows XP friert ein
Zitat:
Und das über längere Zeit ? Also wenn er nicht gerade spielt ? Also ich hab mit solchen Sachen schmerzhafte Erfahrungen machen müssen. Hab meinen Rechner nun für meine Zwecke stabil hinbekommen. Aber bei 3DMark läuft er nicht durch, solange man will .. Kannste glauben.... |
Re: Windows XP friert ein
Zur Info: Habe jetzt alle 3 Sekunden ein Application.ProcessMessages und ein Sleep(5) eingebaut. Jetzt läuft alles prima. Zwar ein wenig langsamer als vorher, dafür aber stabil. Man kann die Maus jetzt wieder bewegen, wie man will, ohne dass die Application einfriert.
Viele Grüße Arne :cheers: |
Re: Windows XP friert ein
Hai Arne,
wofür brauchst Du denn das Sleep? |
Re: Windows XP friert ein
Hallo erstmal :-)
Graphentheorie ... *erschauder* hört sich nach nem bösen Algo. an... ich "durfe" sowas schon mal in Java schreiben ... hat der Algo zufällig nen Aufwand von n³ ? ;-) aber zu deinem Problem .. versuch es doch mal mit einer anderem Delphi Version zu compilen (D7) ... vielleicht hat D4 ja tatsächlich ein Problem mit irgenwas in XP ... die Lösung mit sleep ist eine Lösung .. aber wirklich hübsch isses nicht *grins* hf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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-2025 by Thomas Breitkreuz