बंद करने पर रोकने के लिए एक सेवा की प्रतीक्षा करने के लिए मजबूर करना मुझे एक समस्या है जिसे मैं सी # में लिखी गई विंडोज सेवा के बारे में नहीं समझ सकता। मैं जो करने की कोशिश कर रहा हूं वह है कि मुझे इसे मारने और सेवा को रोकने के लिए मजबूर होने से पहले एक बच्चे की प्रक्रिया को समाप्त करने के लिए निर्दिष्ट अवधि की प्रतीक्षा करें। मैंने अपना टाइमआउट 5 से 15 सेकंड तक कहीं भी सेट किया है और मेरी सेवा उचित समय की प्रतीक्षा करती है और फिर बच्चे को मार देती है और जब मैं इसे एमएमसी सेवा विंडो के माध्यम से रोकता हूं तो रोकता है। हालांकि अगर मैं कंप्यूटर बंद कर देता हूं तो मेरी सेवा ठीक से प्रतीक्षा करने और बंद होने में सक्षम होने से पहले उड़ा दी जाती है। मैंने पढ़ा है कि विंडोज इसे बंद करने से पहले बंद करने के लिए 30 सेकंड के टाइमआउट के लिए अनुमति देता है। मेरा कोड 30 सेकंड से बहुत कम समय में निष्पादित कर रहा है, अधिकतम 20 सेकंड या उससे भी अधिक है, जो मैंने टाइमआउट सेट किया है उसके आधार पर।विंडोज़ को
मैंने win32 एपीआई में SetServiceStatus() फ़ंक्शन का उपयोग करने का प्रयास किया है, लेकिन इसने कोड के फ़ंक्शन को नहीं बदला है। मैंने सत्यापित किया है कि फ़ंक्शन कॉल सफल हो रहा है। क्या विंडोज़ को मेरी सेवा को ठीक से बंद करने की प्रतीक्षा करने के लिए मजबूर करने का कोई और तरीका है? मैं इसे विंडोज 7 x86, और विंडोज विस्टा एसपी 1 x86 में परीक्षण कर रहा हूं।
+1: * जाहिर है * यहां समाधान समाधान को रोकने के लिए कम समय ले रहा है। बहुत सारे अनुप्रयोग इस के महत्व को अनदेखा करते हैं और। –