Statusanzeige



  • Hallo allerseits

    ich habe eine Klasse entwickelt, die mir Dateien kopiert. Je nach Wahl des Benutzers kann die Grösse des Datenpaketes zwischen 0 und ein paar GB liegen. Um anzuzeigen, dass das Programm noch läuft und nicht abgestürzt ist, habe ich eine Fortschrittsanzeige eingebaut. Ein Timer generiert mir jede Sekunde eine Meldung, die ich dann benutzen will, um die Anzeige zu aktualisieren. (Ein entsprechender Wert ist in der selbst entwickelten Klasse vorhanden)
    Das Problem ist jetzt, dass ich in meiner selbst entwickelten Methode bin und dort alle Files durcharbeite, erst dann komme ich wieder in die MFC-Klasse und OnTimer() reagiert mit der Aktualisierung der Fortschrittsanzeige (mit 100%).

    Gibt es da eine Möglichkeit, um dem Timer "hohe" Priorität zuzuweisen um auf den Timer zu reagieren?

    Gruss Thomas



  • ich weiss nicht was dein problem ist

    du hast also ein MFC programm, stimmts?

    in dieser hast du wahrscheinlich deinen mainDlg.cpp die dann den Timer aufruft.

    Warum höhere Priörität? wird der Timer nicht ca. jede sec aufgerufen?

    z.b. dauert das kopieren etwas über 10 sec. dann müsste der timer 9-10 mal aufgerufen werden, tut es das nicht?

    hast du in der timer fkt schon zugriff auf die variable die du dann aufrufst für die fortschrittsanzeige? deine kopier methode muss diese variable manipulieren und die timer fkt nimmt diese und zeigt den fortschrittsbalken an.

    wie errechnest du die variable? sag bitte nicht nach anzahl der zu kopierenden files. die insgesamte bytegrösse der files ist ein gutes indiez



  • Du brauchst wohl einen Thread.
    Wie das genau funktioniert, musst du leider selbst herausfinden.

    Ansonsten hat Windows eigentlich für so ziemlich alles einen Standarddialog, vielleicht kannst du auch einfach den vom Kopieren nehmen.

    🙂



  • @tz: Die Variable errechne ich mit der Anzahl Files, da sie nicht nur kopiert werden.
    Der Timer wird logischerweise nicht aufgerufen, da ich in einer Methode stecke und diese zuerst abgearbeitet werden muss. Erst danach kann der Timer wieder reagieren.

    @estartu_de: Danke für den Tipp mit dem Thread, funktioniert jetzt wunderbar. Aber einen Standartdialog fürs kopieren habe ich nicht gefunden. Hasst du mir dafür noch eine Bezeichnung?

    Gruss Thomas



  • black_sheep_thomas schrieb:

    @estartu_de: Danke für den Tipp mit dem Thread, funktioniert jetzt wunderbar. Aber einen Standartdialog fürs kopieren habe ich nicht gefunden. Hasst du mir dafür noch eine Bezeichnung?

    Das war nur eine Vermutung, ob du da vielleicht dran kommst. 🙂


Anmelden zum Antworten