मेरे पास एक प्रबंधित थ्रेड है जो एक अप्रबंधित कोड में प्रतीक्षा कर रहा है, अवरुद्ध है, (विशेष रूप से, यह नामांकित पाइपसेवरस्ट्रीम.टाइटफ़ोरकनेक्शन() पर कॉल करता है जो अस्थायी रूप से अप्रबंधित कोड में कॉल करता है, और एक टाइमआउट प्रदान करता है)।अप्रबंधित कोड में अवरुद्ध प्रबंधित थ्रेड को कैसे समाप्त करें?
मैं थ्रेड को अच्छी तरह से बंद करना चाहता हूं।
थ्रेड.एबॉर्ट() का कोई प्रभाव नहीं पड़ता है जब तक कि कोड प्रबंधित क्षेत्र में वापस नहीं आ जाता है, जो तब तक नहीं करेगा जब तक कोई ग्राहक कनेक्शन न करे, जिसे हम प्रतीक्षा नहीं कर सकते)।
मुझे अप्रबंधित कोड से "सदमे" की आवश्यकता है; या अप्रबंधित भूमि में होने पर भी धागे को मारने का एक तरीका।
किसी भी कारण से आप NamedPipeServerStream.BeginWaitForConnection() का उपयोग नहीं कर रहे हैं? – SpaceghostAli
मूल रूप से क्योंकि थ्रेड किसी कनेक्शन के लिए "हमेशा के लिए" इंतजार करना चाहता है (जब तक कि शटडाउन न हो)। स्टार्ट/एंड प्रतीक्षाफॉरकनेक्शन के साथ, मुझे शुरुआत करना होगा, एक सेकंड प्रतीक्षा करें, कनेक्शन या टाइमआउट की जांच करें, और टाइमआउट पर लूप करें। –
ठीक है मुझे यह मिल गया। अच्छी तरह से डीटीबी के जवाब में थोड़ा सा संशोधन आपको जो चाहिए वह आपको देना चाहिए। AsyncResult पर प्रतीक्षा करने के बजाय, साझा किए गए वेटहैंडल पर प्रतीक्षा करें जिसे आपने थ्रेड को रोकने के लिए कोड से सेट किया है। – SpaceghostAli