2012-05-03 17 views
15

मैं यह पता लगाने की कोशिश कर रहा हूं कि प्रदर्शन का लाइव ग्राफ बनाने के लिए मेरा एप्लिकेशन कितने धागे चल रहा है। क्या आप मुझे सही दिशा में इंगित कर सकते हैं या कोड उदाहरण प्रदान कर सकते हैं? धन्यवाद!पता लगाएं कि मेरा एप्लिकेशन कितने धागे चल रहा है?

+0

क्या आप जानना चाहते हैं कि आपने कितने धागे स्पष्ट रूप से बनाए हैं? या किसी भी धागे .NET ने आपकी तरफ से भी बनाया होगा? –

+3

कैसे पता चलेगा कि प्रदर्शन से कितने धागे मौजूद हैं? निश्चित रूप से दिलचस्प क्या है कि ये धागे क्या कर रहे हैं। –

+0

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

उत्तर

31

आप मौजूदा प्रक्रिया के Threads संपत्ति पर एक नज़र हो सकता है:

System.Diagnostics.Process.GetCurrentProcess().Threads 

बेशक इस रूप में अच्छी तरह अप्रबंधित धागे भी शामिल है।

+0

क्या इसमें समाप्त धागे शामिल हैं? – clamp

+2

किसी ऐसे व्यक्ति के लिए असेंबली और नेमस्पेस निर्दिष्ट करना जो सी # प्रोजेक्ट में डिफ़ॉल्ट रूप से शामिल नहीं है, तो उत्तर को और अधिक पूरा कर देगा। 'प्रक्रिया '' System.Diagnostics' नामस्थान में है। – ThunderGr

+0

@ डारिन डिमिट्रोव यह जानने का कोई तरीका है कि 'कौन सा धागा प्रोग्राम के किस खंड से संबंधित है?' – AminM

-2
private static int s_threadCount; 

private static void MyMethod() { 
    Interlocked.Increment(ref s_threadCount); 
    try { 
    ... 
    } finally { 
    Interlocked.Decrement(ref s_threadCount); 
    } 
} 
+4

इससे आपको केवल उस विशेष विधि में धागे की संख्या बताई जाएगी, न कि प्रक्रिया के लिए धागे की संख्या। –

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