2011-03-02 13 views
5

दोस्तों PerformanceCounters का उपयोग करना, मैं निम्नलिखित कोड है:विशिष्ट ड्राइव लक्षित करने के लिए

using System.Diagnostics; 

private PerformanceCounter diskRead = new PerformanceCounter(); 
private PerformanceCounter diskWrite = new PerformanceCounter(); 

diskRead.CategoryName = "PhysicalDisk"; 
diskRead.CounterName = "Disk Reads/sec"; 
diskRead.InstanceName = "_Total"; 

diskWrite.CategoryName = "PhysicalDisk"; 
diskWrite.CounterName = "Disk Writes/sec"; 
diskWrite.InstanceName = "_Total"; 

इस कोड को डिस्क का ट्रैक प्रति सेकंड पढ़ता है और डिस्क प्रति सेकंड लिखता है और यह ठीक काम करता है रहता है। मेरा सवाल यह है कि, मैं एक विशिष्ट ड्राइव के पढ़ने और लिखने का ट्रैक कैसे रखूं? मेरे कंप्यूटर में 3 हार्ड ड्राइव हैं और अभी यह कुल 3 ड्राइवों को संयुक्त कर रही है। मैं विशेष रूप से किस ड्राइव को मॉनिटर करना चाहता हूं, मैं कैसे चुन सकता हूं?

उत्तर

9

आप उचित ड्राइव संख्या के साथ "_Total" की जगह चाहिए:

diskRead.InstanceName = "0"; 

कि देख लिया है चाहिए। आपको "0 C: D:" जैसे नाम निर्दिष्ट करने की आवश्यकता है। ओह।

संपादित करें 2:

आप

var cat = new System.Diagnostics.PerformanceCounterCategory("PhysicalDisk"); 
    var instNames = cat.GetInstanceNames(); 

साथ नाम प्राप्त कर सकते और यह शायद ऐसे नाम हैं जो एक नंबर के साथ शुरू फ़िल्टर करने के लिए सुरक्षित है। (सूची में भी _Total है)।

+0

उत्तर के लिए धन्यवाद। यह काम करता था और मुझे जो चाहिए वह प्राप्त करने में सक्षम था। धन्यवाद! – Icemanind

+0

यह अभी भी सभी ड्राइव के लिए काउंटर प्राप्त करता है। विशिष्ट ड्राइव के लिए अलग कैसे करें जैसे सी :, डी :? –

+0

"0 सी: डी:" होना चाहिए ... कितना .. ओसीडी ... माइक्रोसॉफ्ट के लिए इसे इस तरह से बनाने के लिए ... – Patrick

2

एक विशिष्ट इंस्टेंसनाम का उपयोग करें, न कि _Total। इंस्टेंस नाम ढूंढने के लिए Perfmon.exe का उपयोग करें।

संबंधित मुद्दे