2011-02-03 17 views
6

मैं संभावना कुछ स्पष्ट याद आ रही है, लेकिन मुझे हास्य ...कैसे दृश्य स्टूडियो के थ्रेड विंडो "मुख्य थ्रेड '

मैं हमेशा अपने ऐप्लिकेशन में महत्वपूर्ण सूत्र नाम के लिए के रूप में यह डिबगिंग के साथ उपयोगी है की तरह/पहचानें करता लॉगिंग इत्यादि। यदि आप प्रोग्राम्स स्टार्टअप पर Thread.CurrentThread.Name के माध्यम से मुख्य धागे के नाम से पूछते हैं तो आपको null वापस मिल जाएगा। इस तरह, मैं हमेशा यह सुनिश्चित करता हूं कि पहली चीज जो होती है वह यह है कि मुख्य धागा (और कोई अन्य रिलीज थ्रेड) एक अच्छा सार्थक सौंपा जाता है भविष्य के संदर्भ के लिए नाम

मैंने आज तक इसे वास्तव में बहुत अधिक विचार नहीं दिया है, लेकिन जब विजुअल स्टूडियो में थ्रेड विंडो को देखते हैं (किसी थ्रेड नामों को निर्दिष्ट करने से पहले एड इत्यादि), एक विशेष श्रेणी 'मुख्य थ्रेड' को एक psuedo नाम भी दिया जाता है जो "मुख्य थ्रेड" भी पढ़ता है (लेकिन यह वास्तविक धागा नाम नहीं है)।

किसी प्रबंधित परिप्रेक्ष्य से, .NET System.Threading.Thread या System.Diagnostics.ProcessThread पर सार्थक कुछ भी प्रकट नहीं करता है जो किसी एप्लिकेशन के मुख्य थ्रेड (कम से कम मैं देख सकता था) की पहचान करता हूं। मैंने Windows Process and Thread Functions की सूची देखी, और फिर, मुझे कुछ भी स्पष्ट नहीं देखा (शायद ओपन थ्रेड?)।

उत्सुक अगर कोई जानता है कि थ्रेड विंडो विशेष श्रेणी "मुख्य थ्रेड" कैसे निर्दिष्ट करती है?

उत्तर

5

डीबगर DEBUG_PROCESS विकल्प का उपयोग कर CreateProcess के साथ डिबगिंग शुरू करता है। मुख्य थ्रेड का हैंडल PROCESS_INFORMATION.hThread में वापस आ गया है, इसलिए वहां कोई अनुमान नहीं है। अटैचिंग थोड़ा सा ट्रिकियर है, संभवतः पहली CREATE_THREAD_DEBUG_EVENT अधिसूचना डेबगएक्टिव प्रोसेस() के साथ अटैचमेंट के बाद WaitForDebugEvent से देखती है।

एमडीबीजी के लिए source code उपलब्ध है यदि आप नज़दीकी रूप से देखना चाहते हैं।

+0

आह, यह समझ में आता है; जानकारी के लिए धन्यवाद। SourceCode निश्चित रूप से दिलचस्प है। –

+0

CREATE_THREAD_DEBUG_EVENT सूचनाएं अतुल्यकालिक हैं। मुझे यकीन नहीं है कि डिलीवरी का आदेश गारंटी है। CreateProcess द्वारा लौटाई गई जानकारी समझ में आता है, हालांकि। –

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