2011-07-04 20 views
9

में इंस्टेंस मौजूद नहीं है। मैं किसी अन्य .NET 4 एप्लिकेशन से चल रहे .NET 4 एप्लिकेशन से कई प्रदर्शन काउंटर पढ़ने की कोशिश कर रहा हूं।सी # से प्रदर्शन काउंटर पढ़ना: निर्दिष्ट श्रेणी

कुछ काउंटर, जैसे Process\% Processor Time और Process\Private Bytes ठीक काम करते हैं। हालांकि, जैसे ही मैंने नेट श्रेणियों में से एक, .NET CLR Memory\# Gen 0 Collections जैसे से एक प्रदर्शन काउंटर पढ़ने की कोशिश, मैं निम्नलिखित अपवाद:

Instance 'MyApplication' does not exist in the specified Category 

जब मैं फोन:

new PerformanceCounterCategory(".NET CLR Memory").GetInstanceNames() 

यह रिटर्न उदाहरणों का एक बहुत छोटा सेट, और माईप्लिकेशंस वास्तव में सूची में नहीं है। हालांकि, जब मैं perfmon में मेरे प्रदर्शन काउंटरों को देखो, उदाहरणों की सूची मैं वहाँ एक ही श्रेणी के लिए देख/काउंटर बहुत लंबे समय तक है और MyApplication शामिल हैं।

क्या किसी को पता है कि .NET काउंटर मेरे आवेदन के लिए क्यों दिखाई नहीं दे रहे हैं?

(नोट: निगरानी अनुप्रयोग निगरानी अनुप्रयोग द्वारा शुरू किया गया है, इसलिए वे निश्चित रूप से उसी उपयोगकर्ता खाते में चलते हैं। मैंने अपने निगरानी अनुप्रयोग को प्रशासक के रूप में शुरू करने और प्रदर्शन खाता उपयोगकर्ता समूह में अपना खाता जोड़ने का भी प्रयास किया कोई प्रभाव नहीं।)

+0

http://stackoverflow.com/questions/5832709/exception-instance-name-of-instance-does-not-exist-in-the- निर्दिष्ट- श्रेणी –

+0

समस्या नहीं; केवल 1 उदाहरण, एक्सएमएल कॉन्फ़िगर के साथ और उसके बिना यह काम नहीं करता है, और किसी भी मामले में काउंटर perfmon में ठीक से काम करते हैं। – rix0rrr

+0

मैं केवल मिल '" ConsoleApplication2 "' जब मैं वास्तविक उत्पन्न निष्पादन चलाते हैं। जब मैं विजुअल स्टूडियो से प्रोग्राम चलाता हूं तो मुझे यह नहीं मिलता है। मुझे इसके बजाय 'ConsoleApplication2.vshost' मिलता है। –

उत्तर

18

ऐसी परियोजना के लिए दो सेटिंग्स हैं जो आपकी समस्या से प्रासंगिक हो सकती हैं।

सबसे पहले, परियोजना + गुण, टैब, प्लेटफार्म लक्ष्य बनाएँ। एक 64-बिट ऑपरेटिंग सिस्टम के साथ एक मशीन पर, 86 को यह सेटिंग आप उदाहरण ऐसे नाम हैं जो कर नहीं की एक सूची 64-बिट प्रक्रियाओं में शामिल हो जाएगा। Perfmon.exe एक 64-बिट प्रक्रिया है, यह 32-बिट और 64-बिट ऐप्स दोनों के सभी उदाहरण दिखाती है। AnyCPU को प्लेटफार्म लक्ष्य निर्धारित करके समान व्यवहार प्राप्त, कि नहीं डिफ़ॉल्ट अब और विजुअल स्टूडियो 2010 अचयनित पर है "पसंद करते हैं 32-बिट" अगर आप इसे देखते हैं।

दूसरा प्रोजेक्ट + गुण, डीबग टैब, "विजुअल स्टूडियो होस्टिंग प्रक्रिया सक्षम करें" विकल्प है। चेक किए जाने पर, आप yourapp.exe के बजाय yourapp.vshost.exe नामक प्रक्रिया को डीबग कर रहे हैं। यह इंस्टेंस नाम को भी प्रभावित करता है, यह yourapp.vshost होगा। आपके विशिष्ट मामले में समस्या होने की संभावना नहीं है।

यदि यह अनुमान सटीक नहीं था तो इस आवश्यक जानकारी के साथ अपना प्रश्न अपडेट करना सुनिश्चित करें।

+2

यह प्लेटफ़ॉर्म लक्ष्य के कारण था। X86 से 'किसी भी CPU' में बदलना काम किया। बहुत बहुत धन्यवाद, मैंने कभी इस बारे में सोचा नहीं होगा! – rix0rrr

+0

यह भी सुनिश्चित करें कि 'परियोजना गुण -> टैब बनाएं -> 32 बिट पसंद करें' सेट नहीं है। – Ananke

+0

मेरे पास एक ही समस्या है। मैंने किसी भी CPU, x86, और x64 की कोशिश की (32 बिट सेट नहीं है)। प्रत्येक स्थिति में एक ही त्रुटि। क्या किसी का कोई मुद्दा है? – Roger

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