निम्न परिदृश्य पर विचार करें: मैं अपना आवेदन चला रहा हूं, इसके निष्पादन के दौरान, एक और प्रक्रिया चलाने के लिए और केवल दूसरी प्रक्रिया के बाद आंतरिक विशिष्ट प्रारंभिकता समाप्त हो जाती है, मेरा पहला प्रक्रिया जारी है। उदाहरण के लिए:इंटरप्रोसेस सिंक्रनाइज़ेशन ऑब्जेक्ट्स का उपयोग करके 2 प्रक्रियाओं को सिंक्रनाइज़ करना - म्यूटेक्स या ऑटो रीसेट इवेंट
...
// Process1 code does various initializations here
Process.Start("Process2.exe");
// Wait until Process2 finishes its initialization and only then continue (Process2 doesn't exit)
...
मैं कई विकल्प दिखाई:
- Mutex - Mutex मन में स्वचालित रूप से आता है जब interprocess संचार पर विचार, हालांकि, मैं नहीं Process1 एक के लिए प्रतीक्षा करने के कारण का एक तरीका देख सकते हैं mutex कि वह खुद को उत्पन्न किया। मैं एक म्युटेक्स बना सकते हैं और जब तक Mutex बनाई गई है Process1 पर इंतजार
- AutoResetEvent (मतदान और Mutex.OpenExisting समारोह का उपयोग करके) के लिए Process2 पैदा कर सकता है - वे काम के लिए बिल्कुल सही होगा, फिर भी, लगता है कि नेट के तहत इन में इंटरप्रोसेस संचार के लिए इस्तेमाल नहीं किया जा सकता है।
- CreateEvent - मैं पी/आमंत्रण का उपयोग कर सकता हूं और Win32 CreateEvent फ़ंक्शन का उपयोग कर सकता हूं। सिद्धांत रूप में, यह मुझे आवश्यक सब कुछ प्रदान कर सकता है। हालांकि, यदि संभव हो तो मैं देशी कार्यों का उपयोग नहीं करना चाहूंगा।
- बाहरी फ़ाइल का उपयोग करें - सबसे आसान तरीका केवल कुछ ओएस बाहरी ऑब्जेक्ट (फ़ाइल, रजिस्ट्री, आदि) का उपयोग करना होगा। हालांकि, यह बदकिस्मत लगता है, हालांकि।
मुझे इस मामले के लिए आपकी राय सुनकर खुशी होगी।
धन्यवाद!
ऑटोरसेट इवेंट केवल स्थानीय हो सकता है। लेकिन आप सही हैं - EventWaitHandle वही है जो मैं ढूंढ रहा था। धन्यवाद! – VitalyB
ऑटो प्रोसेस संचार के लिए AutoResetEvent और ManualResetEvent का उपयोग क्यों नहीं किया जा सकता है? वे दोनों EventWaitHandle से निकलते हैं – caa