2010-12-16 20 views
8

कहता है कि मेरे पास आईडी 1234 के साथ एक प्रक्रिया है। यह प्रक्रिया मेरे आवेदन चलाने से पहले चल रही है।प्रक्रिया के साथ जारी

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

अब, जब मैं संकलन और एप्लिकेशन को चलाने के लिए, यह प्रक्रिया हो जाता है और मुख्य विंडो शीर्षक से पता चलता:

मैं इस कोड है। हालांकि जब मैं 1234 प्रक्रिया बंद करता हूं, तो ऐप। एक्स्पिटिट आग लगती है ... यह क्यों है? और मैं इसे कैसे आग में लाऊंगा?

उत्तर

17

कृपया ध्यान दें कि documentation बताता है कि EnableRaisingEvents इस घटना को आग से पहले true पर सेट किया जाना चाहिए।

+0

याहू आपने अपना दिन बचाया! – TheVillageIdiot

3

डिफ़ॉल्ट रूप से, प्रदर्शन कारणों से, प्रक्रिया वर्ग घटनाओं को नहीं बढ़ाता है। यदि आप प्रक्रिया ऑब्जेक्ट को बाहर निकलने के लिए देखना चाहते हैं और उस ईवेंट को बढ़ाएं, तो आपको इसकी EnableRaisingEvents संपत्ति को सत्य पर सेट करने की आवश्यकता है।

से बाहर निकलने की प्रक्रिया के लिए एक लागत देखने के लिए एक लागत है। यदि EnableRaisingEvents सत्य है, संबंधित प्रक्रिया समाप्त होने पर बहिष्कृत ईवेंट उठाया जाता है। प्रक्रियाएं जिन्हें आपने के लिए निर्दिष्ट किया है उस समय से चलने वाली मौजूदा घटना।

कभी-कभी, आपका एप्लिकेशन प्रक्रिया शुरू करता है लेकिन इसकी बंद होने की अधिसूचना होने की आवश्यकता नहीं है। उदाहरण के लिए, आपका एप्लिकेशन पर नोटपैड शुरू कर सकता है उपयोगकर्ता को संपादन करने की अनुमति देता है, लेकिन नोटपैड एप्लिकेशन का कोई और उपयोग नहीं करता है। प्रक्रिया से बाहर निकलने पर अधिसूचित नहीं किया जा सकता है, क्योंकि आपके अनुप्रयोग के निरंतर संचालन के लिए प्रासंगिक नहीं है। को सक्षम करने के लिए EnableRaisingEvents सिस्टम संसाधनों को सेट करता है।

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