2010-08-13 16 views
30

यह सरल कार्यक्रम 15 धागे से शुरू होता है - गणना के अनुसार। कभी-कभी अपने जीवनकाल के दौरान यह कुछ गिरता है, लेकिन वे वापस आते हैं।यह सरल .NET कंसोल ऐप में इतने सारे धागे क्यों हैं?

class Program 
{ 
    static void Main(string[] args) 
    { 
     while (true) 
     { 
      Console.WriteLine(Process.GetCurrentProcess().Threads.Count); 
      Thread.Sleep(500); 
     } 
    } 
} 

मैं डिबगर के बिना उम्मीद कर रहा था प्रक्रिया सिर्फ एक धागा है करने के लिए (और मेरी अंतर्ज्ञान this द्वारा समर्थित किया गया था)

, प्रक्रिया 4 धागे है केवल (!)। निश्चित रूप से मेरी सीएलआर सामग्री मेरी प्रक्रिया से छिपी जाएगी?

यह क्या गिनती है? क्या प्रक्रिया में वास्तव में कई धागे हैं? क्यूं कर?

+0

आपके पास कितने हैं? –

+0

जिज्ञासा से बाहर - मैं यहां किसको ऊपर उठाता हूं? हर किसी को एक ही जवाब मिल गया है: डी – obelix

+1

@obelix: यदि वे सभी एक उत्थान के लायक हैं, तो आप उन्हें सभी को ऊपर उठा सकते हैं। एमएसओ पर आपके प्रश्न पूछे जाने चाहिए। – Richard

उत्तर

35

डीबगर के बाहर इसे चलाने का प्रयास करें (यानी F5 के बजाय Ctrl + F5 दबाएं)। आपको केवल तीन थ्रेड्स देखना चाहिए - मुख्य धागा, जीसी थ्रेड & फाइनलाइज़र थ्रेड आईआईआरसी। आपके द्वारा देखे जाने वाले अन्य थ्रेड डीबगर से संबंधित धागे हैं।

+0

हां, मुख्य धागा, जीसी, और फाइनेंजर ठीक वही हैं जो आप देखेंगे। हालांकि आपको ए की आवश्यकता है) डीबगर के बाहर चलाएं और बी) विजुअल स्टूडियो होस्टिंग प्रक्रिया को बंद करें जो एक धागा या दो जोड़ता है। – Tergiver

+0

क्या आपके पास msdn आलेख का लिंक है? –

+1

वीएस होस्टिंग प्रक्रिया सक्रिय है भले ही मैं वीएस के माध्यम से प्रक्रिया को चलाने के बिना रिलीज मोड में हूं? मुझे अभी भी 4 धागे दिखाई दे रहे हैं ... –

5

यदि आप इसे डीबगर संलग्न किए बिना चलाते हैं, तो काफी कम धागे हैं। और वे संभवतः फाइनेंजर थ्रेड, और अन्य घर-रखरखाव सीएलआर सामान होंगे।

4

डीबगर (विजुअल स्टूडियो) संलग्न (Ctrl + F5) के बिना इसे चलाने का प्रयास करें। आप देखेंगे कि कम (शायद 3) धागे होंगे। उनमें से अधिकांश धागे डीबगर के साथ करना है।

5

प्रोजेक्ट + गुण, डिबगिंग, "विजुअल स्टूडियो होस्टिंग प्रक्रिया को सक्षम करें" अनचेक करें। मैं नहीं जानता कि यह क्या कर रहा है। जैसे ही मैं इन थ्रेडों पर एक झांक पाने की कोशिश करने के लिए "सक्षम अप्रबंधित कोड डीबगिंग" विकल्प पर टिकटें, वे अब शुरू नहीं हो पाएंगे। कोई सुराग नहीं। लेकिन मुझे यकीन है कि यह हमारे लाभ के लिए है :)

+1

मुझे लगता है कि होस्टिंग प्रक्रिया डीबगर को तेज पट्टियां, या ऐसा कुछ देता है। –

+1

मैं होस्टिंग प्रक्रिया को डिबगिंग के लिए तेज़ स्टार्टअप समय देने के लिए डिज़ाइन किया गया था - जब आप डीबग करते हैं, प्रासंगिक असेंबली नई प्रक्रियाओं को बनाने/नष्ट करने के लिए डीबगर की बजाय vshost प्रक्रिया में लोड हो जाती है। –

+2

नहीं, होस्टिंग प्रक्रिया सीएलआर का एक कस्टम होस्टेड संस्करण है। अधिकतर सुरक्षा उद्देश्यों के लिए। –

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