Performansmangel (Keine Rückmeldung)
-
Hallo,
ich habe eine Programmchen mit Visual C++ 6.0 erstellt.
Die finden Sie unter http://www.fh-augsburg.de/~nenov/dateien/skript/IV/algodat/nAnalyse.zipoder einfach unter diesem Link das Programm heist nAnalyse: http://www.fh-augsburg.de/~nenov/page/Semester/SemesterIV.html
Das Tool erstellt zufelige Schlüßel(Key´s) in eine Datei (Schritt 1). Wenn der Anzahl der Key´s klein ist (je nach Rechner Resoursen), wirden problemmlos die Schlüßel erstellt.
Bei meinem Rechner zum Beispiel ist die maximal Grenze beim 500 000 Schlüßel.Meine Frage beziet sich auf einen Anzahl von Key´s größer 5 000 000 . Also man klickt dann auf dem Button "Datei erstellen". Das Programm funktioniert immer noch und arbeitet obwohl das in der "Task-Manager" steht "Keine Rückmeldung". Das Tool sieht auch wie Abgestürzt, es ist aber im Wirklichkeit nicht.
Ich hätte gerne wissen, wie man so einen Problem umgehen kann?
Ist das falsche Programmierung was ich gemacht habe :)))?
-
Also, die beste Lösung wäre wohl ein Thread, wo dann das gemacht wird, was so lange dauert.
Oder du schreibst erstmal testweise ganz Oben in die Funktion, die so lange dauertCWaitCursor csr;Dann sieht der Benutzer wenigstens eine Sanduhr. (Glaub ich, probier es besser aus.)
-
Wie kann ich eigenen Thread starten?? Ich verwechlse glaube ich Thread mit Funktion.
Könnte mir jemand bitte zeigen, wie einen Thread zu implementieren ist??
-
In der FAQ gibt es eine Kategorie "Threads", das sollte dich hoffentlich weiter bringen.
Die Forumsuche sollte dann auch noch einiges bringen, wenn du nach *thread* suchst.
Ich kenne mich damit leider noch nicht aus, aber ich habe es hier oft gelesen.

-
Gibt 2 Möglichkeiten.
Workerthread oder Klasse von CWinThread abgeleitet.
Unter CWinThread findest du in jedem Fall was in der FAQ.
-
(Keine Rückmeldung) ist immer ein Zeichen, das keine Leistung an das System mehr zurückgegeben wird, unter 2000/XP ist das eigentlich kein Problem, da das System Sich die Zeit nimmt unt andere Prozesse auch bedient. Unter Win98 ist das schon einschneident, da das ganze System unter umständen steht.
Meiner Meinung bringt hier nur ein Workerthread was, in dem die Schleife für die Erstellung der Keys läuft und in der Schleife, sollte am Ende Zeit (Sleep) an das System zurückgegeben werden (und bei MFC Anwendungen die Windows-Messages mit abgearbeitet werden).
Gruß
-
Keine Rückmeldung hat nichts mit der Leistung zu tun obwohl solche Programm oft 99% der Rechenleistung wegnehmen. Das mit Windows < NT stimmt so aber schon. Es liegt daran das Windows überprüft ob sich Programme noch melden. (Sowas ähnliches wie ein Watchdog)
Meldet sich das Programm nicht da es ja arbeitet und somit keine Messageloop mehr ausführt dann sagt Windows das sich das Programm nicht meldet (Keine Rückmeldung)
Nun kann der User entscheiden was er macht. Wenn die Messageloop nicht abgearbeitet wird dann wird auch das Fenster nicht neu gezeignet wenn es überdeckt wurde.