Process.Id Egenskap

Definition

Hämtar den unika identifieraren för den associerade processen.

public:
 property int Id { int get(); };
public int Id { get; }
member this.Id : int
Public ReadOnly Property Id As Integer

Egenskapsvärde

Den systemgenererade unika identifieraren för den process som refereras av den här Process instansen.

Undantag

Processens Id egenskap har inte angetts.

-eller-

Det finns ingen process som är associerad med det här Process objektet.

Exempel

I följande exempel visas hur du hämtar Id för alla instanser som körs av ett program. Koden skapar en ny instans av Anteckningar, visar alla instanser av Anteckningar och tillåter sedan att användaren anger Id numret för att ta bort en specifik instans.

using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
using System.Diagnostics;

class ProcessDemo
{
    public static void Main()
    {
        Process notePad = Process.Start("notepad");
        Console.WriteLine("Started notepad process Id = " + notePad.Id);
        Console.WriteLine("All instances of notepad:");
        // Get Process objects for all running instances on notepad.
        Process[] localByName = Process.GetProcessesByName("notepad");
        int i = localByName.Length;
        while (i > 0)
        {
            // You can use the process Id to pass to other applications or to
            // reference that particular instance of the application.
            Console.WriteLine(localByName[i - 1].Id.ToString());
            i -= 1;
        }

        i = localByName.Length;
        while (i > 0)
        {
            Console.WriteLine("Enter a process Id to kill the process");
            string id = Console.ReadLine();
            if (string.IsNullOrEmpty(id))
                break;

            try
            {
                using (Process chosen = Process.GetProcessById(Int32.Parse(id)))
                {
                    if (chosen.ProcessName == "notepad")
                    {
                        chosen.Kill();
                        chosen.WaitForExit();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Incorrect entry.");
                continue;
            }

            i -= 1;
        }
    }
}
open System
open System.Diagnostics

let notePad = Process.Start "notepad"
printfn $"Started notepad process Id = {notePad.Id}"
printfn "All instances of notepad:"
// Get Process objects for all running instances on notepad.
let localByName = Process.GetProcessesByName "notepad"
let mutable i = localByName.Length

while i > 0 do
    // You can use the process Id to pass to other applications or to
    // reference that particular instance of the application.
    printfn $"{localByName.[i - 1].Id}"
    i <- i - 1

i <- localByName.Length

while i > 0 do
    printfn "Enter a process Id to kill the process"
    let id = Console.ReadLine()

    if String.IsNullOrEmpty id then
        i <- 0
    else
        try
            use chosen = Int32.Parse id |> Process.GetProcessById

            if chosen.ProcessName = "notepad" then
                chosen.Kill()
                chosen.WaitForExit()

            i <- i - 1
        with e ->
            printfn "Incorrect entry."
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Imports System.Diagnostics



Class ProcessDemo

    Public Shared Sub Main()
        Dim notePad As Process = Process.Start("notepad")
        Console.WriteLine("Started notepad process Id = " + notePad.Id.ToString())
        Console.WriteLine("All instances of notepad:")
        ' Get Process objects for all running instances on notepad.
        Dim localByName As Process() = Process.GetProcessesByName("notepad")
        Dim i As Integer = localByName.Length
        While i > 0
            ' You can use the process Id to pass to other applications or to
            ' reference that particular instance of the application.
            Console.WriteLine(localByName((i - 1)).Id.ToString())
            i -= 1
        End While

        i = localByName.Length
        While i > 0
            Console.WriteLine("Enter a process Id to kill the process")
            Dim id As String = Console.ReadLine()
            If id = String.Empty Then
                Exit While
            End If
            Try
                Using chosen As Process = Process.GetProcessById(Int32.Parse(id))
                    If chosen.ProcessName = "notepad" Then
                        chosen.Kill()
                        chosen.WaitForExit()
                    End If
                End Using
            Catch e As Exception
                Console.WriteLine("Incorrect entry.")
                GoTo ContinueWhile1
            End Try
            i -= 1
ContinueWhile1:
        End While

    End Sub
End Class

Kommentarer

Processen Id är inte giltig om den associerade processen inte körs. Därför bör du se till att processen körs innan du försöker hämta Id egenskapen. Tills processen avslutas identifierar processidentifieraren processen unikt i hela systemet.

Du kan ansluta en process som körs på en lokal dator eller fjärrdator till en ny Process instans genom att skicka processidentifieraren till GetProcessById metoden. GetProcessByIdär en static metod som skapar en ny komponent och anger egenskapen för den nya Id instansen Process automatiskt.

Processidentifierare kan återanvändas av systemet. Egenskapsvärdet Id är bara unikt när den associerade processen körs. När processen har avslutats kan systemet återanvända egenskapsvärdet Id för en orelaterad process.

Eftersom identifieraren är unik i systemet kan du skicka den till andra trådar som ett alternativ till att skicka en Process instans. Den här åtgärden kan spara systemresurser men garantera att processen identifieras korrekt.

Gäller för

Se även