डेल्फी XE2 प्रलेखन TEvent के बारे में इस का कहना है:आप कैसे पता लगाते हैं कि एक TEVE सेट किया गया है?
कभी कभी, आप एक धागा बल्कि निष्पादन पूरा करने के लिए एक विशेष थ्रेड के लिए प्रतीक्षा की तुलना में कुछ आपरेशन समाप्त होने की प्रतीक्षा की जरूरत है। ऐसा करने के लिए, एक ईवेंट ऑब्जेक्ट का उपयोग करें। इवेंट ऑब्जेक्ट्स (System.SyncObjs.TEvent) को वैश्विक दायरे के साथ बनाया जाना चाहिए ताकि वे सिग्नल की तरह कार्य कर सकें जो सभी थ्रेडों के लिए दृश्यमान हों।
जब कोई थ्रेड एक ऑपरेशन पूरा करता है जो अन्य धागे पर निर्भर करता है, तो यह TEvent.SetEvent को कॉल करता है। SetEvent सिग्नल चालू करता है, इसलिए चेक करने वाले किसी अन्य थ्रेड को पता चलेगा कि ऑपरेशन पूरा हो गया है। सिग्नल को बंद करने के लिए, ResetEvent विधि का उपयोग करें।
उदाहरण के लिए, ऐसी स्थिति पर विचार करें जहां आपको एक थ्रेड के बजाय अपने निष्पादन को पूरा करने के लिए कई धागे की प्रतीक्षा करनी होगी। क्योंकि आप नहीं जानते कि कौन सा धागा आखिरी बार खत्म हो जाएगा, आप बस धागे की प्रतीक्षाफॉर विधि का उपयोग नहीं कर सकते हैं। इसके बजाए, आप प्रत्येक थ्रेड को समाप्त होने पर काउंटर को बढ़ा सकते हैं, और अंतिम थ्रेड सिग्नल है कि वे सभी एक ईवेंट सेट करके किए जाते हैं।
हालांकि, डेल्फी दस्तावेज यह नहीं बताता कि कैसे एक और धागा पता लगा सकता है कि TEvent.Set ईवेंट को बुलाया गया था। क्या आप कृपया यह बताने के लिए व्याख्या कर सकते हैं कि TEVE.Set कहलाता था या नहीं?
आप सभी धागे/घटनाओं को संकेत देने के लिए क्यों इंतजार नहीं करते? प्रतीक्षा करने के बजाय परीक्षण क्यों करें? –
आपकी टिप्पणी के लिए धन्यवाद। मुझे यहां मिली सहायता के जवाब में, मैंने वास्तव में, प्रोग्राम को सिग्नल करने की प्रतीक्षा करने के लिए कोड प्रोग्राम किया है। –