Avatar billede -mundi- Nybegynder
28. februar 2005 - 10:27 Der er 1 løsning

Skifte process prioritet via threads

Hej Eksperter,

Jeg er ved at lave et lille program som skal overvåge nogen processer. Programmet skal kunne følgende:

starte en tråd som henter alle progam id's ind for f.eks "photoshop.exe".

Når der er 2 photoshop processer der kører, skal tråden holde øje med hvilken process der bruger mindst CPU resourcer, og sætte det pågældende process's prioritet til "above normal". Hvis det andet program tidligere var sat til "above normal" skal prioriteten sættes tilbage til "normal".
Med andre ord, der er kun 1 af processerne der må være sat til "above normal".
Hvis der på et tidspunkt kun er en process der kører, skal den sættes til normal, og igen holde øje med om der startes en nummer 2 op.

Der vil max være 2 processer på samme tid.

Jeg har indtil videre følgende, men er helt på bar bund hvad både threading og tildeling af ny prioritet angår :

private void getProgramids(object sender, System.EventArgs e) {
                String processname="photoshop.exe";
                Int32 id1,id2;
                counter=0;
                ConnectionOptions oConn = new ConnectionOptions();
                //oConn.Username = "username";
                //oConn.Password = "password";
                System.Management.ManagementScope oMs = new System.Management.ManagementScope("\\\\localhost", oConn);     
                System.Management.ObjectQuery oQuery = new System.Management.ObjectQuery("Select * from Win32_Process");
           
                //Execute the query 
                ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs,oQuery);
                //Get the results
                ManagementObjectCollection oReturnCollection = oSearcher.Get();         
                //loop through found processes
                foreach( ManagementObject oReturn in oReturnCollection ) {
                    //oReturn["ProcessId"]
                    if(oReturn["Name"].ToString()==processname){
                        counter++;
                        if(counter==1){
                            id1=(Int32)oReturn["ProcessId"];                           
                        }else {
                            id2=(Int32)oReturn["ProcessId"];
                        }
                    }
                }
        }
Avatar billede -mundi- Nybegynder
28. februar 2005 - 13:15 #1
Lukker igen, fandt noget andet kode jeg lige vil teste igennem
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester