PerformanceCounterCategory.Exists Método
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.
Determina se a categoria está registrada no sistema.
Sobrecargas
| Nome | Description |
|---|---|
| Exists(String) |
Determina se a categoria está registrada no computador local. |
| Exists(String, String) |
Determina se a categoria está registrada no computador especificado. |
Exists(String)
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 buscada.
Retornos
true se a categoria estiver registrada; caso contrário, false.
Exceções
O categoryName parâmetro é null.
O categoryName parâmetro é uma cadeia de caracteres vazia ("").
Falha em uma chamada para uma API do sistema subjacente.
Código que está sendo executado 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 = 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 a pesquisa global por 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.
Note
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 do 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 Usuários do Monitor de Desempenho.
No Windows Vista e posterior, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de 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 deseja executar como administrador.
Confira também
Aplica-se a
Exists(String, String)
Determina se a categoria está registrada no 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 buscada.
- machineName
- String
O nome do computador a ser examinado para a categoria.
Retornos
true se a categoria estiver registrada; caso contrário, false.
Exceções
O categoryName parâmetro é null.
O categoryName parâmetro é uma cadeia de caracteres vazia ("").
- ou -
O parâmetro machineName é inválido.
Falha em uma chamada para uma API do sistema subjacente.
O caminho de rede não pode ser encontrado.
O chamador não tem a permissão necessária.
- ou -
Código que está sendo executado sem privilégios administrativos tentou ler um contador de desempenho.
Exemplos
O exemplo a seguir determina se existe um PerformanceCounterCategory objeto nomeado Orders . 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 = 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 a pesquisa global por 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.
Note
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 do 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 Usuários do Monitor de Desempenho.
No Windows Vista e posterior, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de 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 deseja executar como administrador.