2010-06-18 5 views
8

क्या यह पता लगाने का कोई तरीका है कि मैं कितने प्रबंधित थ्रेड का उपयोग करता हूं (थ्रेडपूल समेत)?सी # मेरे ऐपडोमेन में प्रबंधित धागे की गणना कैसे करें?

जब मैं GetProcess के माध्यम से अप्रबंधित धागे की संख्या प्राप्त मैं (बहुत शुरुआत में 21)

उत्तर

1

इस तरह यह काम करता है नहीं है इसके बारे में एक पागल संख्या है। किसी प्रबंधित प्रोग्राम में कोई भी थ्रेड प्रबंधित कोड निष्पादित कर सकता है, जिसमें मूल रूप से एक अप्रबंधित थ्रेड के रूप में प्रारंभ किया गया था। जो सबसे अधिक हैं, मुख्य धागा और कोई थ्रेडपूल धागा जीवन को पूरी तरह से अप्रबंधित कोड निष्पादित करता है। यह प्रबंधित कोड में thunks हालांकि मार्शल द्वारा प्रदान गेटवे की तरह। GetDelegateForFunctionPointer()।

दर्जनों (अन्यथा निष्क्रिय) धागे देखकर असामान्य नहीं है। वे आम तौर पर थॉमपूल थ्रेड और थ्रेड हैं जो COM सर्वर द्वारा शुरू किए जाते हैं। .NET में उस थंबनेल को याद किया जा रहा है जिसे आपको थ्रेड पर प्रबंधित किया जाना चाहिए। उन धागे पर मैनेज्ड थ्रेड आईडी। यह जानबूझकर है, एक तार्किक .NET थ्रेड को भौतिक ऑपरेटिंग सिस्टम थ्रेड नहीं होना चाहिए। हालांकि वर्तमान उपयोग में कोई मेजबान नहीं है, जहां यह मामला नहीं है।

आपको प्रश्न पूछने से बचना होगा।

+0

धन्यवाद:

Microsoft से एक नमूना है। हालांकि मैं एक जवाब देना चाहता हूँ। किसी भी समय मेरे एप्लिकेशन में कितने प्रबंधित थ्रेड बनाए गए हैं यह कैसे पता लगाएं? –

+0

आप उन्हें बनाते हैं, उन्हें गिनें। –

+0

उस बिंदु पर है! मैं 3 डी पार्टी एपीआई का उपयोग करता हूं और वे विवरण का खुलासा नहीं करना चाहते हैं, यह थ्रेड पूल या अन्य सॉफ़्टवेयर इत्यादि का भी उपयोग कर सकता है .... –

1

मैंने जांच नहीं की है कि यह डिबगिंग इंटरफेस का उपयोग कर संभव है या नहीं, लेकिन चूंकि वीएस अपने डीबगर में प्रबंधित थ्रेड प्रदर्शित करता है, तो आप उन्हें भी अपने साथ प्राप्त करने में सक्षम होना चाहिए।

.NET में, एक डीबगर लिखना आपके अपेक्षा से कहीं अधिक आसान है। डीबगर को कार्यान्वित करने में मूल रूप से ICorDebug इंटरफेस को लागू करने के होते हैं। दे मुझे पता है के लिए Managed Debugger Sample