मैं यूएसबी के माध्यम से जुड़े डिवाइस पर कुछ संचालन करने के लिए एक विंडोज फॉर्म एप्लीकेशन विकसित कर रहा हूं। सभी परिचालनों जैसे पढ़ने, लिखने और अन्य चीजों के लिए, हमारे पास एक कस्टम लाइब्रेरी है।अवरुद्ध कॉल पर फंसे हुए थ्रेड को रोकें
जब उपयोगकर्ता बटन दबाता है तो लिखें ऑपरेशन किया जाता है।
पढ़ने के लिए, एक अलग थ्रेड बनाया गया है। उपलब्ध लाइब्रेरी के साथ समस्या यह है कि रीड कॉल अवरुद्ध है और इसमें इन्फिनिट टाइमआउट है।
कनेक्शन विफलता के मामले में, यह थ्रेड रीड फ़ंक्शन कॉल पर अटक जाता है क्योंकि यह फ़ंक्शन केवल तभी टूट जाता है जब यह डेटा प्राप्त करता है।
इस तरह के परिदृश्य में इस धागे को मारने का तरीका क्या हो सकता है? Thread.Abort() काम नहीं कर रहा है।
मैं इस प्रोग्रामिंग के लिए सी # का उपयोग कर रहा हूं।
"कस्टम पुस्तकालय" प्रदान नहीं करता है * किसी * एक अवरुद्ध एक असफल कनेक्शन पर पढ़ रद्द करने के लिए इसका मतलब है, आप इसे दूर ईमानदारी से फेंक और कुछ अलग करने का उपयोग करना चाहिए। – Clemens
मुझे पता है .... मेरी इच्छा है कि मैं कर सकता हूं ... लेकिन सी # के डिफ़ॉल्ट सीरियल पोर्ट क्लास के साथ ऐसा ही मामला है ... यदि मैं टाइमआउट को इन्फिनेट सेट करता हूं तो ऑपरेशन असफल कनेक्शन पर फंस जाएगा। – Swanand
आप जो कुछ भी पढ़ने की कोशिश कर रहे हैं उसे "हैंडल" बंद करने का प्रयास कर सकते हैं ... तो पढ़ा जाएगा रद्द कर दिया जाएगा मुझे लगता है ... और आपका धागा इस बात पर निर्भर करता है कि यह कैसे लिखा जा सकता है। –