में किसी ईवेंट को निकाल दिए जाने तक ब्लॉक करने के लिए कैसे करें this question पूछने के बाद, मुझे आश्चर्य है कि किसी ईवेंट को निकालने के लिए प्रतीक्षा करना संभव है, और उसके बाद ईवेंट डेटा प्राप्त करें और इसका हिस्सा वापस करें। इस तरह का क्रमबद्ध करें:सी #
private event MyEventHandler event;
public string ReadLine(){ return event.waitForValue().Message; }
...
event("My String");
...elsewhere...
var resp = ReadLine();
कृपया सुनिश्चित करें कि जो भी समाधान आप प्रदान करते हैं वह इसे किसी अन्य चीज़ से प्राप्त करने के बजाय सीधे मूल्य देता है। मैं पूछ रहा हूं कि ऊपर दी गई विधि किसी तरह से उपलब्ध है या नहीं। मैं ऑटो/मैनुअल रीसेट इवेंट के बारे में जानता हूं, लेकिन मुझे नहीं पता कि वे सीधे वैल्यू वापस लौटाते हैं जैसा मैंने ऊपर किया था।
अद्यतन: मैंने MyEventHandler
(जिसमें Message
फ़ील्ड शामिल है) का उपयोग करके एक ईवेंट घोषित किया। मेरे पास आग लगने की प्रतीक्षा के लिए ReadLine
नामक एक और धागे में एक विधि है। जब ईवेंट WaitForValue विधि (ईवेंट हैंडलिंग दृश्य का हिस्सा) निकालता है तो ईवेंट तर्क देता है, जिसमें संदेश होता है। संदेश तब रीडलाइन द्वारा लौटाया जाता है जिसे जिसे भी कहा जाता है।
The accepted answer से that question मैंने पूछा कि मैंने क्या किया था, लेकिन यह बिल्कुल सही नहीं लगता है। यह लगभग लगता है जैसे मैनुअल रीसेट इवेंट फायरिंग और डेटा को पुनर्प्राप्त करने और इसे वापस करने के बीच डेटा के साथ कुछ हो सकता है।
अद्यतन:Auto/ManualResetEvent
के साथ मुख्य समस्या यह है कि यह बहुत कमजोर है। एक धागा घटना के लिए इंतजार कर सकता है, और फिर किसी और के लिए इसे बदलने से पहले इसे पाने के लिए पर्याप्त समय नहीं देता है। क्या ताले या कुछ और उपयोग करने का कोई तरीका है? हो सकता है कि प्राप्त करें और सेट स्टेटमेंट का उपयोग करें।
क्या करने के लिए बदल
थोड़ी देर के पाश के बारे में: 'जबकि (someGlobalvar);' 'cahnge एक समारोह आप इस घटना के लिए asign में someGlobalvar'। – elyashiv
यह सक्रिय प्रतीक्षा है, और यह एक बहुत ही खराब समाधान है –
अब, 2 साल बाद, ऐसा लगता है कि मुझे केवल वेटटवो बनाना चाहिए जो किसी ऑब्जेक्ट को वापस करेगा, और '* ResetEvent.Set (ऑब्जेक्ट डेटा)'। मुझे अभी भी ऑब्जेक्ट संदर्भों के बारे में चिंता करने की आवश्यकता होगी, लेकिन यह सामान्य है। कम से कम सूचक नहीं बदलेगा। –