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"];
}
}
}
}
