Existiert ein Process



  • Hallo Community,

    ich habe folgendes Problem. Ich erstelle aus einer Unmenge an Dateien mit Hilfe eines Programmes das in einer DOS-Box läuft ein einzelnes PDF. Dies kann mit unter bei entsprechender Anzahl an Dateien sehr lange dauern. Desshalb wollte ich um dieses Prozess herrum einen 'wxProgressDialog' basteln.

    Dies habe ich mit folgendem Code probiert:

    // ..
    MyPdfPrgDlg = new wxProgressDialog(_("Erstelle Datei bitte warten."), mess, 100, NULL);
    MyPdfPrgDlg->Show(true);
    // Ausführen des Befehls
    long MyProzId(wxExecute(command, wxEXEC_ASYNC));
    while (wxProcess::Exists(MyProzId))
    {
        // hier mach ich dann arbeiten
    }
    // Hier dann erst weiter machen wenn Prozess geschlossen wurde
    // ..
    

    Soweit funktioniert das ganze auch. Meine 'Dos-Box' wird nach der Abarbeitung geschlossen, allerdings muss ich sehr lange darauf warten bis ich aus 'wxProcess::Exists(MyProzId)' ein false(Prozess existiert nicht mehr) zurück erhalte. (Obwohl das Fenster schon längst, geschlossen ist).

    Jetzt ist meine Frage ob ich noch irgendwelche andere (schnellere) Möglichkeiten habe den um abzufragen ob das Programm noch am arbeiten ist, oder bereits geschlossen wurde.

    Mfg Ollow...



  • Benutz nicht das statische exist, sondern leite eine Klasse von wxProcess ab und fang das Event wxEVT_END_PROCESS ab.
    Das geht schneller.
    http://docs.wxwidgets.org/2.8/wx_wxprocess.html#wxprocessctor



  • Thx Scorcher24, das war der richtige Denkanstoß. So funzt es wunderbar schnell... 🙂


Anmelden zum Antworten