This documentation is archived and is not being maintained.

InstanceData Class

Holds instance data associated with a performance counter sample.


Namespace:  System.Diagnostics
Assembly:  System (in System.dll)

Public Class InstanceData

The InstanceData type exposes the following members.

Public methodInstanceDataInitializes a new instance of the InstanceData class, using the specified sample and performance counter instance.

Public propertyInstanceNameGets the instance name associated with this instance data.
Public propertyRawValueGets the raw data value associated with the performance counter sample.
Public propertySampleGets the performance counter sample that generated this data.

Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)

The following code example displays the contents of the InstanceData objects that exist in a particular PerformanceCounterCategory on the local computer. It first displays a numbered list of PerformanceCounter categories. After the user enters the number of one of the categories, the sample displays, for each PerformanceCounter in the PerformanceCounterCategory, the instance data associated with each instance of the PerformanceCounter.

Imports System
Imports System.Diagnostics
Imports Microsoft.VisualBasic

Module InstDataCopyToMod

    Private categoryName As String

    Sub Main()
        Dim catNumStr As String
        Dim categoryNum As Integer

        Dim categories() As PerformanceCounterCategory = _

        ' Create and sort an array of category names.
        Dim categoryNames(categories.Length - 1) As String
        Dim catX As Integer
        For catX = 0 To categories.Length - 1
            categoryNames(catX) = categories(catX).CategoryName

        Console.WriteLine( _
            "These categories are registered on this computer:")

        For catX = 0 To categories.Length - 1
            Console.WriteLine("{0,4} - {1}", catX + 1, _
        Next catX

        ' Ask the user to choose a category.
        Console.Write( _
            "Enter the category number from the above list: ")
        catNumStr = Console.ReadLine()

        ' Validate the entered category number.
            categoryNum = Integer.Parse(catNumStr)
            If categoryNum < 1 Or categoryNum > categories.Length Then
                Throw New Exception( _
                    String.Format("The category number must be in the " & _
                        "range 1..{0}.", categories.Length))
            End If
            categoryName = categoryNames((categoryNum - 1))

        Catch ex As Exception
            Console.WriteLine("""{0}"" is not a valid category number." & _
                vbCrLf & "{1}", catNumStr, ex.Message)
        End Try

        ' Process the InstanceDataCollectionCollection for this category.
        Dim pcc As New PerformanceCounterCategory(categoryName)
        Dim idColCol As InstanceDataCollectionCollection = pcc.ReadCategory()
        Dim idColArray(idColCol.Count - 1) As InstanceDataCollection

        Console.WriteLine("InstanceDataCollectionCollection for ""{0}"" " & _
            "has {1} elements.", categoryName, idColCol.Count)

        ' Copy and process the InstanceDataCollection array.
        idColCol.CopyTo(idColArray, 0)

        Dim idCol As InstanceDataCollection
        For Each idCol In idColArray
        Next idCol
    End Sub

    ' Display the contents of an InstanceDataCollection.
    Sub ProcessInstanceDataCollection(ByVal idCol As InstanceDataCollection)

        Dim instDataArray(idCol.Count - 1) As InstanceData

        Console.WriteLine("  InstanceDataCollection for ""{0}"" " & _
            "has {1} elements.", idCol.CounterName, idCol.Count)

        ' Copy and process the InstanceData array.
        idCol.CopyTo(instDataArray, 0)

        Dim idX As Integer
        For idX = 0 To instDataArray.Length - 1
            ProcessInstanceDataObject(instDataArray(idX).InstanceName, _
        Next idX
    End Sub

    ' Display the contents of an InstanceData object.
    Sub ProcessInstanceDataObject(ByVal name As String, _
                                  ByVal CSRef As CounterSample)

        Dim instData As New InstanceData(name, CSRef)
        Console.WriteLine("    Data from InstanceData object:" & vbCrLf & _
            "      InstanceName: {0,-31} RawValue: {1}", _
            instData.InstanceName, instData.RawValue)

        Dim sample As CounterSample = instData.Sample
        Console.WriteLine("    Data from CounterSample object:" & vbCrLf & _
            "      CounterType: {0,-32} SystemFrequency: {1}" & vbCrLf & _
            "      BaseValue: {2,-34} RawValue: {3}" & vbCrLf & _
            "      CounterFrequency: {4,-27} CounterTimeStamp: {5}" & vbCrLf & _
            "      TimeStamp: {6,-34} TimeStamp100nSec: {7}", _
            sample.CounterType, sample.SystemFrequency, sample.BaseValue, _
            sample.RawValue, sample.CounterFrequency, sample.CounterTimeStamp, _
            sample.TimeStamp, sample.TimeStamp100nSec)
    End Sub
End Module

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.