PerformanceCounterCategory.Exists Método

Definição

Determina se a categoria é registrada no sistema.

Sobrecargas

Exists(String)

Determina se a categoria está registrada no computador local.

Exists(String, String)

Determina se a categoria está registrada em um computador especificado.

Exists(String)

Origem:
PerformanceCounterCategory.cs
Origem:
PerformanceCounterCategory.cs
Origem:
PerformanceCounterCategory.cs

Determina se a categoria está registrada no computador local.

public:
 static bool Exists(System::String ^ categoryName);
public static bool Exists (string categoryName);
static member Exists : string -> bool
Public Shared Function Exists (categoryName As String) As Boolean

Parâmetros

categoryName
String

O nome da categoria do contador de desempenho a ser pesquisada.

Retornos

true se a categoria estiver registrada; caso contrário, false.

Exceções

O parâmetro categoryName é null.

O parâmetro categoryName é uma cadeia de caracteres vazia ("").

Falha ao chamar uma API do sistema subjacente.

Um código em execução sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo de código a seguir determina se existe um PerformanceCounterCategory objeto chamado "orders". Caso contrário, ele cria o PerformanceCounterCategory objeto usando um CounterCreationDataCollection objeto que contém dois contadores de desempenho.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

Comentários

O uso do Exists método pode resultar em uma penalidade de desempenho perceptível enquanto todos os contadores de desempenho no computador são verificados quanto à disponibilidade. Se você estiver gravando apenas em um contador de desempenho, poderá evitar o pesquisa global para contadores de desempenho criando o contador de desempenho quando o aplicativo estiver instalado e supondo que a categoria exista ao acessar o contador. Não há como evitar a pesquisa do contador de desempenho ao ler dos contadores de desempenho.

Observação

Para ler contadores de desempenho de uma sessão de logon não interativa no Windows Vista e posterior, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo usuários Monitor de Desempenho ou ter privilégios administrativos.

Para evitar ter que elevar seus privilégios para acessar contadores de desempenho no Windows Vista e posterior, adicione-se ao grupo Monitor de Desempenho Usuários.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

Confira também

Aplica-se a

Exists(String, String)

Origem:
PerformanceCounterCategory.cs
Origem:
PerformanceCounterCategory.cs
Origem:
PerformanceCounterCategory.cs

Determina se a categoria está registrada em um computador especificado.

public:
 static bool Exists(System::String ^ categoryName, System::String ^ machineName);
public static bool Exists (string categoryName, string machineName);
static member Exists : string * string -> bool
Public Shared Function Exists (categoryName As String, machineName As String) As Boolean

Parâmetros

categoryName
String

O nome da categoria do contador de desempenho a ser pesquisada.

machineName
String

O nome do computador a examinar para a categoria.

Retornos

true se a categoria estiver registrada; caso contrário, false.

Exceções

O parâmetro categoryName é null.

O parâmetro categoryName é uma cadeia de caracteres vazia ("").

- ou -

O parâmetro machineName é inválido.

Falha ao chamar uma API do sistema subjacente.

O caminho de rede não foi encontrado.

O chamador não tem a permissão necessária.

- ou -

Um código em execução sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo a seguir determina se um PerformanceCounterCategory objeto chamado Orders existe. Se ele não existir, o exemplo criará o PerformanceCounterCategory objeto usando um CounterCreationDataCollection objeto que contém dois contadores de desempenho.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

Comentários

O uso do Exists método pode resultar em uma penalidade de desempenho perceptível enquanto todos os contadores de desempenho no computador são verificados quanto à disponibilidade. Se você estiver gravando apenas em um contador de desempenho, poderá evitar o pesquisa global para contadores de desempenho criando o contador de desempenho quando o aplicativo estiver instalado e supondo que a categoria exista ao acessar o contador. Não há como evitar a pesquisa do contador de desempenho ao ler dos contadores de desempenho.

Observação

Para ler contadores de desempenho de uma sessão de logon não interativa no Windows Vista e posterior, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo usuários Monitor de Desempenho ou ter privilégios administrativos.

Para evitar ter que elevar seus privilégios para acessar contadores de desempenho no Windows Vista e posterior, adicione-se ao grupo Monitor de Desempenho Usuários.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

Confira também

Aplica-se a