CWinApp Prozess Priorität ändern?



  • Hallo,
    ich habe eine zeitkritische Anwendung und möchte deshalb die Prozess-Priorität der Anwendung erhöhen.
    Das Programm ist eine dialogfeldbasierende MFC Applikation, d.h. von CWinApp abgeleitet.

    Wie kann ich das anstellen? Habe folgendes versucht:

    AfxGetApp()->CWinThread::SetThreadPriority(THREAD_PRIORITY_TIME_CRITICAL);

    Scheint aber nicht zu funktionieren, da im Taskmanager immer noch "Normal" als Prozesspriorität angezeigt wird.

    Kann mir da jemand helfen?

    Danke!

    mfg
    Christian



  • wo wir grade bei deb Prozessen sind, ich würde gerne ein tool als systemdienst laufen lassen, und soll auch gleich booten gestartet werden. bzw. das will direkt im tool einstellen.



  • Du änderst ja auch nicht die Prozess-, sondern die Thread-Priorität (oder wie interpretierst Du "SetThreadPriority"?)
    Verwende

    SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
    

    Ich Rate Dir aber dringend davon ab, wenn Du nur einen Prozessor hast! Wenn der Thread auch noch "THREAD_PRIORITY_TIME_CRITICAL" hat, kann es vorkommen, dass Dein Windows komplett einfriert!



  • Jochen Kalmbach schrieb:

    Wenn der Thread auch noch "THREAD_PRIORITY_TIME_CRITICAL" hat, kann es vorkommen, dass Dein Windows komplett einfriert!

    du gehörst wohl auch zu den spezialisten, die sich immer als 'administrator' auf ihrer windoofs-box einloggen 😃



  • Nein, ich gehöre zu den Spezialisten, die mit Maschinensteuerungen kämpfen...



  • Jochen Kalmbach schrieb:

    Nein, ich gehöre zu den Spezialisten, die mit Maschinensteuerungen kämpfen...

    aha, und was hat das mit windows thread- und prozessprioritäten zu tun?



  • net schrieb:

    Jochen Kalmbach schrieb:

    Nein, ich gehöre zu den Spezialisten, die mit Maschinensteuerungen kämpfen...

    aha, und was hat das mit windows thread- und prozessprioritäten zu tun?

    Da musst Du Dich manchmal um solche Dinge wie Prioritäten kümmern. Und da auf dem Rechner sonst nix anderes läuft, ist das auch akzeptable (sonst würde ich davon immer abraten).



  • Jochen Kalmbach schrieb:

    Da musst Du Dich manchmal um solche Dinge wie Prioritäten kümmern. Und da auf dem Rechner sonst nix anderes läuft, ist das auch akzeptable (sonst würde ich davon immer abraten).

    hmmm?? ein desktop- bzw. serverbetriebssystem zur maschinensteuerung nehmen? ist das nicht etwas unpassend? das kommt mir so vor, als würde einer versuchen mit visual basic hardwaretreiber zu schreiben 😮



  • net schrieb:

    Jochen Kalmbach schrieb:

    Da musst Du Dich manchmal um solche Dinge wie Prioritäten kümmern. Und da auf dem Rechner sonst nix anderes läuft, ist das auch akzeptable (sonst würde ich davon immer abraten).

    hmmm?? ein desktop- bzw. serverbetriebssystem zur maschinensteuerung nehmen? ist das nicht etwas unpassend? das kommt mir so vor, als würde einer versuchen mit visual basic hardwaretreiber zu schreiben 😮

    ISt aber durchaus üblich. Tippe mal auf "Benutzerfreundlichkeit" :p

    edit: ausserdem kann man dann nebenbei noch im forum lesen 😃


  • Mod

    ChristianSt schrieb:

    ich habe eine zeitkritische Anwendung und möchte deshalb die Prozess-Priorität der Anwendung erhöhen.
    Das Programm ist eine dialogfeldbasierende MFC Applikation, d.h. von CWinApp abgeleitet.

    In wie weit ist eine dialogbasierende Anwendung zeitkritisch?
    Beachte die Hinweise von Jochen!



  • Drollig
    Wenn ich das Dialog Feld verschiebe hält die Maschine an, bis ich die Maustaste loslass.. 😃



  • 1310-Logik schrieb:

    Drollig
    Wenn ich das Dialog Feld verschiebe hält die Maschine an, bis ich die Maustaste loslass.. 😃

    Naja, ich denke Du hast schon mal was von Threads gehört, oder?
    Und ganz abgesehen davon verwendet man i.d.R. verschiedene Prozesse für Steuerung und Oberfläche...



  • Jochen Kalmbach schrieb:

    1310-Logik schrieb:

    Drollig
    Wenn ich das Dialog Feld verschiebe hält die Maschine an, bis ich die Maustaste loslass.. 😃

    Naja, ich denke Du hast schon mal was von Threads gehört, oder?
    Und ganz abgesehen davon verwendet man i.d.R. verschiedene Prozesse für Steuerung und Oberfläche...

    Nene das ist nicht von mir, ich arbeite nur damit.
    Das Gerät ist sowieso halbherzig aufgebaut, entsprechend auch die Software 🙄



  • Martin Richter schrieb:

    ChristianSt schrieb:

    ich habe eine zeitkritische Anwendung und möchte deshalb die Prozess-Priorität der Anwendung erhöhen.
    Das Programm ist eine dialogfeldbasierende MFC Applikation, d.h. von CWinApp abgeleitet.

    In wie weit ist eine dialogbasierende Anwendung zeitkritisch?
    Beachte die Hinweise von Jochen!

    Bei der Anwendung handelt es sich um eine PIC Programmer-Software die über die Parallele bzw. Serielle Schnittstelle die PIC Microcontroller programmiert. Da hier über den PC der Takt und das Programmiersignal per SW erzeugt werden, kommt es manchmal zu Programmierfehlern der Chips, wenn Windows gerade wieder mal was "Besseres" zu tun hat.

    Jochen Kalmbach schrieb:

    Du änderst ja auch nicht die Prozess-, sondern die Thread-Priorität (oder wie interpretierst Du "SetThreadPriority"?)
    Verwende

    SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS)
    

    Ich Rate Dir aber dringend davon ab, wenn Du nur einen Prozessor hast! Wenn der Thread auch noch "THREAD_PRIORITY_TIME_CRITICAL" hat, kann es vorkommen, dass Dein Windows komplett einfriert!

    Bin mir darüber bewusst das dadurch andere Anwendunge ev. beinträchtigt werden, aber der Programmiervorgang selbst dauert ja im Durchschnitt nur ein paar Sekunden 🙂

    Danke für die Hilfe!! 😃


Anmelden zum Antworten