Search code examples
c#com+servicedcomponent

Make a ServicedComponent run with lower priority


We have a ServicedComponent (COM+ server application) which is quite CPU intensive. It's called from a Windows Service and the amount of time it takes for it to complete is not very important.

However, I do need it to run with lower priority. How can I change it's priority?


Solution

  • I'm assuming that your component is running in a Server Application (out of process from your windows service).

    If that is the case you could set the priority of the COM+ process to be BelowNormal in the class constructor:

    public class Class1 : ServicedComponent
    {
        public Class1()
        {
            System.Diagnostics.Process process = 
                System.Diagnostics.Process.GetCurrentProcess();
    
            if (process.PriorityClass != 
                System.Diagnostics.ProcessPriorityClass.BelowNormal)
            {
                process.PriorityClass = 
                    System.Diagnostics.ProcessPriorityClass.BelowNormal;
            }
        }
    }
    

    If I run a simple test the dllhost.exe process priority is set to be BelowNormal.