Process.Id Vlastnost

Definice

Získá jedinečný identifikátor přidruženého procesu.

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

Hodnota vlastnosti

Systémový jedinečný identifikátor procesu, na který odkazuje tato Process instance.

Výjimky

Vlastnost procesu Id nebyla nastavena.

nebo

K tomuto Process objektu není přidružený žádný proces.

Příklady

Následující příklad ukazuje, jak získat Id pro všechny spuštěné instance aplikace. Kód vytvoří novou instanci Poznámkového bloku, zobrazí seznam všech instancí Poznámkového bloku a pak uživateli umožní zadat Id číslo, které má odebrat konkrétní instanci.

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

Poznámky

Tento proces Id není platný, pokud přidružený proces není spuštěný. Proto byste měli před pokusem o načtení Id vlastnosti zajistit, aby proces běžel. Dokud proces neukončí, identifikátor procesu jednoznačně identifikuje proces v celém systému.

Proces spuštěný v místním nebo vzdáleném počítači můžete připojit k nové Process instanci předáním identifikátoru procesu metodě GetProcessById . GetProcessById static je metoda, která vytvoří novou komponentu a nastaví Id vlastnost pro novou Process instanci automaticky.

Identifikátory procesů může systém znovu použít. Hodnota Id vlastnosti je jedinečná pouze v době, kdy je spuštěn přidružený proces. Po ukončení procesu může systém znovu použít Id hodnotu vlastnosti pro nesouvisející proces.

Vzhledem k tomu, že identifikátor je v systému jedinečný, můžete ho předat jiným vláknům jako alternativu Process k předání instance. Tato akce může uložit systémové prostředky, ale zaručit, že je proces správně identifikován.

Platí pro

Viz také