2010-07-20 5 views

cevap

13

bu konu üzerinde fazla bilgi orada görünmüyor, özellikle de bulundu Bunu yapmanın en iyi yolu, kategori silinir ve yeniden oluşturulduktan sonra yeniden uygulayacağız daha sonra mevcut ham değerlerini korumak ve sağlamaktır .

/// <summary> 
/// When deleting the Category, need to preserve the existing counter values 
/// </summary> 
static Dictionary<string, long> GetPreservedValues(string category, XmlNodeList nodes) 
{ 
    Dictionary<string, long> preservedValues = new Dictionary<string, long>(); 

    foreach (XmlNode counterNode in nodes) 
    { 
     string counterName = counterNode.Attributes["name"].Value; 

     if (PerformanceCounterCategory.CounterExists(counterName, category)) 
     { 
      PerformanceCounter performanceCounter = new PerformanceCounter(category, counterName, false); 
      preservedValues.Add(counterName, performanceCounter.RawValue); 

      Console.WriteLine("Preserving {0} with a RawValue of {1}", counterName, performanceCounter.RawValue); 
     } 
     else 
     { 
      Console.WriteLine("Unable to preserve {0} because it doesn't exist", counterName); 
     } 
    } 

    return preservedValues; 
} 

/// <summary> 
/// Restore preserved values after the category has been re-created 
/// </summary> 
static void SetPreservedValues(string category, Dictionary<string, long> preservedValues) 
{ 
    foreach (KeyValuePair<string, long> preservedValue in preservedValues) 
    { 
     PerformanceCounter performanceCounter = new PerformanceCounter(category, preservedValue.Key, false); 
     performanceCounter.RawValue = preservedValue.Value; 

     Console.WriteLine("Restoring {0} with a RawValue of {1}", preservedValue.Key, performanceCounter.RawValue); 
    } 
}