Performansproblem (Keine Rückmeldung)

Don_Pazo

Erfahrenes Mitglied
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.zip

oder 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 :)))?
 
Rechen- bzw. zeitintensive Programmabläufe sollten in einen eigenen Thread ausgelagert werden. Als einfache Lösung kann man zumindest innerhalb einer lange laufenden Schleife folgendes Codefragment einfügen, um anfallende Messages zu verarbeiten:
C++:
MSG msg;

while( ::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE ) )
{   
    if( ::GetMessage(&msg, NULL, 0, 0)) 
    {
      ::TranslateMessage(&msg);
      ::DispatchMessage(&msg);
    }
    else
    {
        break;
    }
}
Gruß
MCoder
 
Hallo zusammen,

also kann man diese while-Schleife dafür nutzen um ankommende Windows MSGs zu verarbeiten? Sprich ich hab ne große for-Schleife die eine Laufzeit von sagen wir mal 30 sekunden hat und in der Zeit die Oberfläche nicht mehr auf Windoof reagieren könnte, kann ich dann die Oberfläche durch den Einbau der while-Schleife "reagierbar" machen!!
Das ist ja was feines *g*

Dank U well ;)

Gruß
RuFF
 
Zurück