Process.Id Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém o identificador exclusivo para o processo associado.
public:
property int Id { int get(); };
public int Id { get; }
member this.Id : int
Public ReadOnly Property Id As Integer
Valor da propriedade
O identificador exclusivo gerado pelo sistema do processo referenciado por essa Process instância.
Exceções
A propriedade do Id processo não foi definida.
-ou-
Não há nenhum processo associado a esse Process objeto.
Exemplos
O exemplo a seguir demonstra como obter o Id para todas as instâncias em execução de um aplicativo. O código cria uma nova instância do Bloco de Notas, lista todas as instâncias do Bloco de Notas e permite que o usuário insira o Id número para remover uma instância específica.
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
Comentários
O processo Id não será válido se o processo associado não estiver em execução. Portanto, você deve garantir que o processo esteja em execução antes de tentar recuperar a Id propriedade. Até que o processo seja encerrado, o identificador do processo identifica exclusivamente o processo em todo o sistema.
Você pode conectar um processo em execução em um computador local ou remoto a uma nova Process instância passando o identificador de processo para o GetProcessById método.
GetProcessById é um static método que cria um novo componente e define a Id propriedade para a nova Process instância automaticamente.
Os identificadores de processo podem ser reutilizados pelo sistema. O Id valor da propriedade é exclusivo somente enquanto o processo associado está em execução. Depois que o processo for encerrado, o sistema poderá reutilizar o valor da Id propriedade para um processo não relacionado.
Como o identificador é exclusivo no sistema, você pode passá-lo para outros threads como uma alternativa para passar uma Process instância. Essa ação pode salvar os recursos do sistema, mas garantir que o processo seja identificado corretamente.