Export (0) Print
Expand All

Process.BasePriority Property

Gets the base priority of the associated process.

[Visual Basic]
Public ReadOnly Property BasePriority As Integer
[C#]
public int BasePriority {get;}
[C++]
public: __property int get_BasePriority();
[JScript]
public function get BasePriority() : int;

Property Value

The base priority, which is computed from the PriorityClass of the associated process.

Exceptions

Exception Type Condition
InvalidOperationException The process has exited.

-or-

The process has not started, so there is no process ID.

Remarks

The BasePriority of the process is the starting priority for threads created within the associated process. You can view information about the base priority through the System Monitor's Priority Base counter.

Based on the time elapsed or other boosts, the operating system can change the base priority when a process should be placed ahead of others.

The BasePriority property lets you view the starting priority assigned to a process. However, because it is read-only, you cannot use the BasePriority to set the priority of the process. To change the priority, use the PriorityClass property. The BasePriority is viewable using the System Monitor, while the PriorityClass is not. Both the BasePriority and the PriorityClass can be viewed programmatically. The following table shows the relationship between BasePriority values and PriorityClass values.

BasePriority PriorityClass
4 Idle
8 Normal
13 High
24 RealTime

Windows 98 Platform Note:  This property is not available on this platform if you started the process with ProcessStartInfo.UseShellExecute set to true.

Example

[Visual Basic, C#, C++] The following example starts an instance of Notepad. The example then retrieves and displays various properties of the associated process. The example detects when the process exits, and displays the process's exit code.

[Visual Basic] 
Imports System
Imports System.Diagnostics
Imports System.Threading

Namespace Process_Sample
   Class MyProcessClass

      Public Shared Sub Main()
         Try

            Dim myProcess As Process
            myProcess = Process.Start("NotePad.exe")

            While Not myProcess.HasExited

               Console.WriteLine()
               
               ' Get physical memory usage of the associated process.
               Console.WriteLine("Process's physical memory usage: " + _
                                      myProcess.WorkingSet.ToString)
               ' Get base priority of the associated process.
               Console.WriteLine("Base priority of the associated process: " + _
                                      myProcess.BasePriority.ToString)
               ' Get priority class of the associated process.
               Console.WriteLine("Priority class of the associated process: " + _
                                      myProcess.PriorityClass.ToString)
               ' Get user processor time for this process.
               Console.WriteLine("User Processor Time: " + _
                                      myProcess.UserProcessorTime.ToString)
               ' Get privileged processor time for this process.
               Console.WriteLine("Privileged Processor Time: " + _
                                   myProcess.PrivilegedProcessorTime.ToString)
               ' Get total processor time for this process.
               Console.WriteLine("Total Processor Time: " + _
                                     myProcess.TotalProcessorTime.ToString)
               ' Invoke overloaded ToString function.
               Console.WriteLine("Process's Name: " + myProcess.ToString)
               Console.WriteLine("-------------------------------------")

               If myProcess.Responding Then
                  Console.WriteLine("Status:  Responding to user interface")
                  myProcess.Refresh()
               Else
                  Console.WriteLine("Status:  Not Responding")
               End If
               Thread.Sleep(1000)
            End While

            Console.WriteLine()
            Console.WriteLine("Process exit code: {0}", myProcess.ExitCode)

         Catch e As Exception
            Console.WriteLine("The following exception was raised: " + e.Message)
         End Try
      End Sub 'Main
   End Class 'MyProcessClass
End Namespace 'Process_Sample


[C#] 
using System;
using System.Diagnostics;
using System.Threading;

namespace Process_Sample
{
   class MyProcessClass
   {
      public static void Main()
      {
         try
         {

            Process myProcess;
            myProcess = Process.Start("NotePad.exe");

            while(!myProcess.HasExited)
            {
               Console.WriteLine();

               // Get physical memory usage of the associated process.
               Console.WriteLine("Process's physical memory usage: " + myProcess.WorkingSet);
               // Get base priority of the associated process.
               Console.WriteLine("Base priority of the associated process: " + myProcess.BasePriority);
               // Get priority class of the associated process.
               Console.WriteLine("Priority class of the associated process: " + myProcess.PriorityClass);
               // Get user processor time for this process.
               Console.WriteLine("User Processor Time: " + myProcess.UserProcessorTime);
               // Get privileged processor time for this process.
               Console.WriteLine("Privileged Processor Time: " + myProcess.PrivilegedProcessorTime);
               // Get total processor time for this process.
               Console.WriteLine("Total Processor Time: " + myProcess.TotalProcessorTime);
               // Invoke overloaded ToString function.
               Console.WriteLine("Process's Name: " + myProcess.ToString());
               Console.WriteLine("-------------------------------------");

               if(myProcess.Responding)
               {
                  Console.WriteLine("Status:  Responding to user interface");
                  myProcess.Refresh();
               }
               else
               {
                  Console.WriteLine("Status:  Not Responding");
               }
               Thread.Sleep(1000);

            }

            Console.WriteLine();
            Console.WriteLine("Process exit code: {0}", myProcess.ExitCode);
         }
         catch(Exception e)
         {
            Console.WriteLine("The following exception was raised: " + e.Message);
         }
      }

   }
}

[C++] 
#using <mscorlib.dll>
#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;

int main() {
    try {
        Process* myProcess;
        myProcess = Process::Start(S"NotePad.exe");

        while(!myProcess->HasExited)       
        {
           Console::WriteLine();

            // Get physical memory usage of the associated process.
            Console::WriteLine(S"Process's physical memory usage: {0}", myProcess->WorkingSet.ToString());
            // Get base priority of the associated process.
            Console::WriteLine(S"Base priority of the associated process: {0}", myProcess->BasePriority.ToString());
            // Get priority class of the associated process.
            Console::WriteLine("Priority class of the associated process: {0}", __box(myProcess->PriorityClass));
            // Get user processor time for this process.
            Console::WriteLine(S"User Processor Time: {0}", myProcess->UserProcessorTime.ToString());
            // Get privileged processor time for this process.
            Console::WriteLine(S"Privileged Processor Time: {0}", myProcess->PrivilegedProcessorTime.ToString());
            // Get total processor time for this process.
            Console::WriteLine(S"Total Processor Time: {0}", myProcess->TotalProcessorTime.ToString());
            // Invoke overloaded ToString function.
            Console::WriteLine(S"Process's Name: {0}", myProcess->ToString());
            Console::WriteLine(S"-------------------------------------");

            if (myProcess->Responding) 
            {
                Console::WriteLine(S"Status:  Responding to user interface");
                myProcess->Refresh();
            } 
            else
            {
                Console::WriteLine(S"Status:  Not Responding");
            }

            Thread::Sleep(1000);
        }

        Console::WriteLine();
        Console::WriteLine("Process exit code: {0}", myProcess->ExitCode.ToString());

    } catch (Exception* e) {
       Console::WriteLine(S"The following exception was raised:  {0}", e->Message);
    }
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

.NET Framework Security: 

See Also

Process Class | Process Members | System.Diagnostics Namespace | PriorityClass | ProcessPriorityClass | ThreadPriorityLevel

Show:
© 2014 Microsoft