Tôi phải làm điều gì đó rất sai ở đây. Tôi tạo bộ đếm hiệu suất tùy chỉnh như sau:Tại sao các quầy hiệu suất của tôi không thay đổi?
string counterCategory = "Test Category";
string counterName = "Test Counter";
if (!PerformanceCounterCategory.Exists(counterCategory))
{
Console.WriteLine("Creating Counters");
CounterCreationDataCollection counterCreationDataCollection =
new CounterCreationDataCollection();
counterCreationDataCollection.Add(
new CounterCreationData(counterName,
"Description",
PerformanceCounterType.NumberOfItems32)
);
PerformanceCounterCategory.Create(counterCategory,
"My category description/Help",
PerformanceCounterCategoryType.SingleInstance,
counterCreationDataCollection);
}
Danh mục và bộ đếm được tạo và có thể xem trong màn hình hiệu suất.
sau đó tôi cố gắng để thay đổi giá trị của bộ đếm
PerformanceCounter myCounter =
new PerformanceCounter(counterCategory, counterName, false);
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Setting to "+i);
myCounter.RawValue = i;
Thread.Sleep(200);
}
myCounter.Close();
Tuy nhiên như tôi ngồi và xem bộ đếm trong màn biểu diễn có gì xảy ra, giá trị không bao giờ thay đổi.
Vì vậy, tôi đang làm gì sai?
Nếu tôi thêm lệnh gọi nextValue() hoặc rawValue(), giá trị từ đó được trả lại như tôi mong đợi nhưng Màn hình hiệu suất của Windows vẫn hiển thị đường thẳng, ví dụ:
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Setting to "+i);
myCounter.IncrementValue()
Console.WriteLine("Next Value = "+myCounter.RawValue());
Thread.Sleep(200);
}
Edit: tôi đã tìm thấy rằng nếu tôi đóng giám sát hoạt động và sau đó mở lại nó mà không xóa các quầy, mà đột nhiên nó nhận ra đó là một giá trị mới. Vì vậy, các giá trị đang được thiết lập, và bền bỉ, tuy nhiên Performance Monitor không thấy những thay đổi.
Hoặc trong trường hợp của tôi, khởi động lại. –