Share via


InstanceDataCollectionCollection.Contains(String) 方法

定义

确定集合中是否存在指定计数器的实例数据集合(由索引 InstanceDataCollection 对象之一来标识)。

public:
 bool Contains(System::String ^ counterName);
public bool Contains (string counterName);
member this.Contains : string -> bool
Public Function Contains (counterName As String) As Boolean

参数

counterName
String

性能计数器的名称。

返回

如果集合中存在包含指定计数器的实例数据集合,则为 true;否则为 false

例外

counterName 参数为 null

示例

下面的代码示例接受 PerformanceCounter 命令行中的类别名称和计数器名称。 它获取 InstanceDataCollectionCollection 的 , PerformanceCounterCategory 然后使用 Contains 方法确定指定的计数器是否存在。 如果计数器存在,则示例获取关联的 InstanceDataCollection 并显示集合中的实例名称。

public static void Main(string[] args)
{
    // The following values can be used as arguments.
    string categoryName = "Process";
    string counterName = "Private Bytes";

    InstanceDataCollectionCollection idColCol;

    // Copy the supplied arguments into the local variables.
    try
    {
        categoryName = args[0];
        counterName = args[1];
    }
    catch
    {
        // Ignore the exception from non-supplied arguments.
    }

    try
    {
        // Get the InstanceDataCollectionCollection for this category.
        PerformanceCounterCategory pcc = new PerformanceCounterCategory(categoryName);
        idColCol = pcc.ReadCategory();
    }
    catch(Exception ex)
    {
        Console.WriteLine("An error occurred getting the InstanceDataCollection for " +
            "category \"{0}\"."+ "\n" +ex.Message, categoryName);
        return;
    }

    // Check if this counter name exists using the Contains
    // method of the InstanceDataCollectionCollection.
    if (!idColCol.Contains(counterName))
    {
        Console.WriteLine("Counter \"{0}\" does not exist in category \"{1}\".", counterName, categoryName);
        return;
    }
    else
    {
        // Now get the counter's InstanceDataCollection object using the
        // indexer (Item property) for the InstanceDataCollectionCollection.
        InstanceDataCollection countData = idColCol[counterName];

        ICollection idColKeys = countData.Keys;
        string[] idColKeysArray = new string[idColKeys.Count];
        idColKeys.CopyTo(idColKeysArray, 0);

        Console.WriteLine("Counter \"{0}\" of category \"{1}\" " +
            "has {2} instances.", counterName, categoryName, idColKeys.Count);

        // Display the instance names for this counter.
        int index;
        for(index=0; index<idColKeysArray.Length; index++)
        {
            Console.WriteLine("{0,4} -- {1}", index+1, idColKeysArray[index]);
        }
    }
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""

    Dim idColCol As InstanceDataCollectionCollection

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        counterName = args(1)
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Try
        ' Get the InstanceDataCollectionCollection for this category.
        Dim pcc As New PerformanceCounterCategory(categoryName)
        idColCol = pcc.ReadCategory()
    Catch ex As Exception
        Console.WriteLine( _
            "An error occurred getting the InstanceDataCollection for " & _
            "category ""{0}""." & vbCrLf & ex.Message, categoryName)
        Return
    End Try

    ' Check if this counter name exists using the Contains
    ' method of the InstanceDataCollectionCollection.
    If Not idColCol.Contains(counterName) Then
        Console.WriteLine( _
            "Counter ""{0}"" does not exist in category ""{1}"".", _
            counterName, categoryName)
        Return
    Else
        ' Now get the counter's InstanceDataCollection object using the
        ' indexer (Item property) for the InstanceDataCollectionCollection.
        Dim countData As InstanceDataCollection = idColCol(counterName)

        Dim idColKeys As ICollection = countData.Keys
        Dim idColKeysArray(idColKeys.Count - 1) As String
        idColKeys.CopyTo(idColKeysArray, 0)

        Console.WriteLine("Counter ""{0}"" of category ""{1}"" " & _
            "has {2} instances.", counterName, categoryName, idColKeys.Count)

        ' Display the instance names for this counter.
        Dim index As Integer
        For index = 0 To idColKeysArray.Length - 1
            Console.WriteLine("{0,4} -- {1}", index + 1, idColKeysArray(index))
        Next index
    End If
End Sub

注解

参数 counterName 不区分大小写。

集合中的每个 InstanceDataCollection 对象都包含实例的所有计数器的性能数据。 数据按计数器名称编制索引,然后按实例名称编制索引。 Containstrue如果InstanceDataCollection存在关联的计数器具有 参数counterName指定的名称的对象,则返回 。

适用于