5

मैं मल्टीथ्रेडिंग वातावरण के लिए काफी नया हूं और मुझे एक एप्लिकेशन को डीबग करने में समस्या हो रही है जो System.Timers.timer क्लास में विलम्बित ईवेंट द्वारा बनाए गए थ्रेडपूल का उपयोग करता है। मेरे पास एक विधि के अंदर एक ब्रेकपॉइंट सेट है जिसे हर बार बुलाया गया ईवेंट कहा जाता है, लेकिन विजुअल स्टूडियो कोड की रेखाओं के बीच कूद रहा है क्योंकि यह अन्य धागे के कार्यों को इंगित कर रहा है।विजुअल स्टूडियो में थ्रेडपूल कैसे डिबग करें?

मैं एक थ्रेड के बारे में चेतावनी देने के बिना विजुअल स्टूडियो के बिना किसी विशेष धागे पर शुरू से शुरू करने के लिए कैसे एक विधि के माध्यम से डीबग कर सकता हूं? क्या विजुअल स्टूडियो सभी धागे को रोक सकता है और मुझे किसी चुने हुए धागे से डीबग करने देता है?

उत्तर

1

डीबगिंग के दौरान अन्य धागे को निलंबित करना संभव है और केवल उस धागे को चलाने दें जिसे आप चलाने के बारे में सोचते हैं।

  • ओपन दृश्य स्टूडियो में धागे विंडो (डीबग -> विंडोज -> धागे)
  • सही
  • डिबगिंग जारी रखें "फ्रीज" किसी भी धागा आप चलाने के लिए और चयन करने के लिए नहीं करना चाहते हैं पर क्लिक करें।

जब आप अपने विशेष धागे को डीबग करते हैं तो थ्रेड को अनफ्रीज़ करना न भूलें।

+0

यह अभी भी डिबग करने के लिए क्योंकि घटना नई धागे को उत्पन्न करने पर रहता है और मैं वे के रूप में फ्रीज करने के लिए होगा मुश्किल है साथ चलो । हालांकि मुझे एहसास हुआ कि मेरा वर्तमान कार्यान्वयन गलत है क्योंकि कई धागे एक ही विधि (समान सदस्य) तक पहुंच सकते हैं यदि गणना समय टाइमर के सेट अंतराल से अधिक लंबा है। अब मैं 'लॉक' का उपयोग कर रहा हूं, डीबग के साथ बहुत तनाव बचाता हूं। – steeppham

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