InstanceData 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
保存与性能计数器样本关联的实例数据。
public ref class InstanceDatapublic class InstanceDatatype InstanceData = classPublic Class InstanceData- 继承
- 
				InstanceData
示例
下面的代码示例显示本地计算机上特定 PerformanceCounterCategory 中存在的 对象的内容InstanceData。 它首先显示类别的 PerformanceCounter 编号列表。 在用户输入其中一个类别的编号后,示例将显示与 PerformanceCounterPerformanceCounterCategory的每个实例关联的实例 PerformanceCounter数据。
// InstanceData_CopyTo.cpp : main project file.
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
///////////////////////////////////////////////////////////////////////
//
// FORWARD DECLARATIONS
//
///////////////////////////////////////////////////////////////////////
// Console Utility Functions:
void InitConsole();                          // Init console size
void TitleBlock();                           // Write the title block
void CW(String^strText ,                    // Write a colored string
        String^ C = "", int LF = 1);
// InstanceData subroutines
// Display the contents of an InstanceData object.
void ProcessInstanceDataObject(String^ name, CounterSample CSRef);
// Display the contents of an InstanceDataCollection.
void ProcessInstanceDataCollection(InstanceDataCollection^ idCol);
///////////////////////////////////////////////////////////////////////
//
// MAIN PROGRAM
//
///////////////////////////////////////////////////////////////////////
void main()
{
    InitConsole();
    TitleBlock();
    String^ categoryName;
    String^ catNumStr;
    int      categoryNum;
    array<PerformanceCounterCategory^>^ categories =
                PerformanceCounterCategory::GetCategories();
    // Create and sort an array of category names.
    array<String^>^ categoryNames = gcnew array<String^>(categories->Length);
    int catX;
    for(catX=0; catX < categories->Length; catX++)
            categoryNames[catX] = categories[catX]->CategoryName;
    Array::Sort(categoryNames);
    while(1)
    {
    CW("These PerformanceCounterCategory categories are registered \n"
      +"on this computer:","Red");
    for(catX=0; catX < categories->Length; catX++)
            Console::WriteLine("{0,4} - {1}", catX+1, categoryNames[catX]);
    // Ask the user to choose a category.
    Console::Write("\nEnter a category number from the above list: ");
    catNumStr = Console::ReadLine();
    // Validate the entered category number.
    try {
        categoryNum = int::Parse(catNumStr);
        if (categoryNum < 1 || categoryNum > categories->Length)
            throw gcnew Exception(String::Format("The category number "+
                  " must be in the range 1..{0}.", categories->Length));
        categoryName = categoryNames[(categoryNum-1)];
        // Process the InstanceDataCollectionCollection for this category.
        PerformanceCounterCategory^ pcc =
             gcnew PerformanceCounterCategory(categoryName);
        InstanceDataCollectionCollection^ idColCol = pcc->ReadCategory();
        array<InstanceDataCollection^>^ idColArray =
             gcnew array<InstanceDataCollection^>(idColCol->Count);
        CW("\nInstanceDataCollectionCollection for \"" +categoryName+"\" "
           +"has "+idColCol->Count+" elements.","Blue");
        idColCol->CopyTo(idColArray, 0);
        for each ( InstanceDataCollection ^ idCol in idColArray )
                ProcessInstanceDataCollection(idCol);
        }
    catch(Exception^ ex)
        {
        Console::WriteLine("\"{0}\" is not a valid category number." +
            "\n{1}", catNumStr, ex->Message);
        }
    CW("\n\nRun again (Y,N)?","Yellow");
    catNumStr = Console::ReadLine();
    if ("Y" != catNumStr && "y" != catNumStr) break;
    }
}
///////////////////////////////////////////////////////////////////////
//
// SUBROUTINES
//
///////////////////////////////////////////////////////////////////////
void InitConsole() 
{
  Console::BufferHeight = 4000;
  Console::WindowHeight = 40;
}
void TitleBlock()
{
Console::Title = "InstDataCopyTo.cpp Sample";
CW(
 "///////////////////////////////////////////////////////////////////\n"
+"//\n"
+"//  PROGRAM   instdatacopyto.cpp\n"
+"//  PURPOSE   Show how to use InstanceData objects\n"
+"//  OUTPUT    1) Displays a numbered list of PerformanceCounter\n"
+"//               categories that exist on the local computer.\n"
+"//            2) Prompts the user to select a category.\n"
+"//            3) Displays the instance data associated with each\n"
+"//               instance of the PerformanceCounter in the\n"
+"//               selected PerformanceCounterCategory\n"
+"//\n"
+ "///////////////////////////////////////////////////////////////////\n"
,"Yellow");
}
// Utility function:  ConsoleWrite:  Write a colored string
void CW(String^ strText , String^ C, int LF)
{
   if (C != "") Console::ForegroundColor =  *dynamic_cast<ConsoleColor^>
                               (Enum::Parse(ConsoleColor::typeid, C));
   Console::Write(strText);
   Console::ResetColor();
   Console::Write("\n{0}",LF?"\n":"");
}
// Display the contents of an InstanceDataCollection.
void ProcessInstanceDataCollection(InstanceDataCollection ^ idCol)
{
    array<InstanceData^>^ instDataArray = gcnew array<InstanceData^>(idCol->Count);
    CW("\n  InstanceDataCollection for \""
       + idCol->CounterName + "\" has " + idCol->Count + " elements.", "Red");
    // Copy and process the InstanceData array.
    idCol->CopyTo(instDataArray, 0);
    int idX;
    for(idX=0; idX < instDataArray->Length; idX++)
        ProcessInstanceDataObject(instDataArray[idX]->InstanceName,
        instDataArray[idX]->Sample);
}
// Display the contents of an InstanceData object.
void ProcessInstanceDataObject(String ^ name, CounterSample CSRef)
{
    InstanceData ^ instData = gcnew InstanceData(name, CSRef);
    CW("    Data from InstanceData object:","Red",0);
    CW("      InstanceName:     "+instData->InstanceName,"Green",0);
    CW("      RawValue:         " + instData->RawValue);
    CounterSample sample = instData->Sample;
    Console::Write("    Data from CounterSample object:\n" +
        "      CounterType:      {0,-27} SystemFrequency:  {1}\n" +
        "      BaseValue:        {2,-27} RawValue:         {3}\n" +
        "      CounterFrequency: {4,-27} CounterTimeStamp: {5}\n" +
        "      TimeStamp:        {6,-27} TimeStamp100nSec: {7}\n\n",
        sample.CounterType, sample.SystemFrequency, sample.BaseValue,
        sample.RawValue, sample.CounterFrequency, sample.CounterTimeStamp,
        sample.TimeStamp, sample.TimeStamp100nSec);
}
using System;
using System.Diagnostics;
class InstDataCopyToMod
{
    private static string categoryName;
    public static void Main()
    {
        string catNumStr;
        int categoryNum;
        PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
        // Create and sort an array of category names.
        string[] categoryNames = new string[categories.Length];
        int catX;
        for(catX=0; catX<categories.Length; catX++)
        {
            categoryNames[catX] = categories[catX].CategoryName;
        }
        Array.Sort(categoryNames);
        Console.WriteLine("These categories are registered on this computer:");
        for(catX=0; catX<categories.Length; catX++)
        {
            Console.WriteLine("{0,4} - {1}", catX+1, categoryNames[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.
        try
        {
            categoryNum = int.Parse(catNumStr);
            if (categoryNum<1||categoryNum>categories.Length)
            {
                throw new Exception(String.Format("The category number must be in the " +
                    "range 1..{0}.", categories.Length));
            }
            categoryName = categoryNames[(categoryNum-1)];
        }
        catch(Exception ex)
        {
            Console.WriteLine("\"{0}\" is not a valid category number." +
                "\r\n{1}", catNumStr, ex.Message);
            return;
        }
        // Process the InstanceDataCollectionCollection for this category.
        PerformanceCounterCategory pcc = new PerformanceCounterCategory(categoryName);
        InstanceDataCollectionCollection idColCol = pcc.ReadCategory();
        InstanceDataCollection[] idColArray = new InstanceDataCollection[idColCol.Count];
        Console.WriteLine("InstanceDataCollectionCollection for \"{0}\" " +
            "has {1} elements.", categoryName, idColCol.Count);
        // Copy and process the InstanceDataCollection array.
        idColCol.CopyTo(idColArray, 0);
        foreach ( InstanceDataCollection idCol in idColArray )
        {
            ProcessInstanceDataCollection(idCol);
        }
    }
    // Display the contents of an InstanceDataCollection.
    public static void ProcessInstanceDataCollection(InstanceDataCollection idCol)
    {
        InstanceData[] instDataArray = new InstanceData[idCol.Count];
        Console.WriteLine("  InstanceDataCollection for \"{0}\" " +
            "has {1} elements.", idCol.CounterName, idCol.Count);
        // Copy and process the InstanceData array.
        idCol.CopyTo(instDataArray, 0);
        int idX;
        for(idX=0; idX<instDataArray.Length; idX++)
        {
            ProcessInstanceDataObject(instDataArray[idX].InstanceName, instDataArray[idX].Sample);
        }
    }
    // Display the contents of an InstanceData object.
    public static void ProcessInstanceDataObject(string name, CounterSample CSRef)
    {
        InstanceData instData = new InstanceData(name, CSRef);
        Console.WriteLine("    Data from InstanceData object:\r\n" +
            "      InstanceName: {0,-31} RawValue: {1}", instData.InstanceName, instData.RawValue);
        CounterSample sample = instData.Sample;
        Console.WriteLine("    Data from CounterSample object:\r\n" +
            "      CounterType: {0,-32} SystemFrequency: {1}\r\n" +
            "      BaseValue: {2,-34} RawValue: {3}\r\n" +
            "      CounterFrequency: {4,-27} CounterTimeStamp: {5}\r\n" +
            "      TimeStamp: {6,-34} TimeStamp100nSec: {7}", sample.CounterType, sample.SystemFrequency, sample.BaseValue, sample.RawValue, sample.CounterFrequency, sample.CounterTimeStamp, sample.TimeStamp, sample.TimeStamp100nSec);
    }
}
Imports System.Diagnostics
Module InstDataCopyToMod
    Private categoryName As String
    Sub Main()
        Dim catNumStr As String
        Dim categoryNum As Integer
        Dim categories() As PerformanceCounterCategory = _
            PerformanceCounterCategory.GetCategories()
        ' 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
        Next
        Array.Sort(categoryNames)
        Console.WriteLine( _
            "These categories are registered on this computer:")
        For catX = 0 To categories.Length - 1
            Console.WriteLine("{0,4} - {1}", catX + 1, _
                categoryNames(catX))
        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.
        Try
            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)
            Return
        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
            ProcessInstanceDataCollection(idCol)
        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, _
                instDataArray(idX).Sample)
        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
构造函数
| InstanceData(String, CounterSample) | 使用指定的样本和性能计数器实例来初始化 InstanceData 类的新实例。 | 
属性
| InstanceName | 获取与此实例数据关联的实例名称。 | 
| RawValue | 获取与性能计数器样本关联的原始数据值。 | 
| Sample | 获取生成此数据的性能计数器样本。 | 
方法
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) |