2012-03-05 5 views
5

समस्या यह है कि WaitForMultipleObjects (Ex) किसी सरणी में सभी सिग्नल ऑब्जेक्ट्स की केवल छोटी अनुक्रमणिका देता है। मैं जानना चाहता हूं कि ईवेंट ऑब्जेक्ट (CreateEvent का उपयोग करके बनाया गया) सिग्नल (या गैर-संकेतित) स्थिति में क्या है। मुझे लगता है कि यह संभव नहीं है, लेकिन यह सुनिश्चित करने के लिए कि मैं कुछ भी याद नहीं कर रहा हूं) =वास्तव में इसे बदलने के बिना ईवेंट ऑब्जेक्ट की स्थिति कैसे जांचें?

उत्तर

6

प्रत्येक ऑब्जेक्ट के लिए जिसका राज्य आप परीक्षण करना चाहते हैं, शून्य के समय के साथ WaitForSingleObject पर कॉल करें। यदि यह WAIT_OBJECT_0 देता है, तो ऑब्जेक्ट को संकेत दिया जाता है। अन्यथा, यह नहीं है।

जब तक आपके पास ऑटो-रीसेट ईवेंट नहीं होता है, तब तक किसी ऑब्जेक्ट को संकेतित करने का इंतजार नहीं होता है, यह उसकी स्थिति को परिवर्तित नहीं करता है।

ध्यान रखें कि WaitForSingleObject के साथ आप जिस स्थिति का पता लगाते हैं, वह आवश्यक नहीं है जब ऑब्जेक्ट WaitForMultipleObjects लौटा। इस दौरान अधिक वस्तुएं संकेतित हो सकती हैं, और अन्य वस्तुएं गैर-संकेतित हो सकती हैं।

+1

+1 यूप, ऐसा लगता है कि ओपी को प्रत्येक ऑब्जेक्ट के माध्यम से लूप करना होगा, और प्रत्येक व्यक्ति को अलग-अलग जांचें। (इसके अलावा, एक एफवाईआई के रूप में, जबकि ओपी विशेष रूप से यहां घटनाओं के बारे में पूछ रहा है, जागरूक रहें कि WaitForSingleObject * करता है * म्यूटेक्स और सेमफोरस की संकेतित स्थिति बदलता है, इसलिए यदि किसी भी वस्तु में उनको शामिल किया जाता है तो देखभाल की जानी चाहिए!) – BrendanMcK

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