2011-04-27 2 views
5

के लिए बनी हुई है, मुझे एक जटिल एप्लिकेशन मिला जो विंडोज सेवा और कंसोल ऐप के रूप में चलाया जा सकता है।सेवा बंद कर दी गई है लेकिन प्रक्रिया

मैं ज्यादातर डिबगिंग के लिए कंसोल स्टार्टअप का उपयोग करता हूं। जब मैं कंसोल पर Ctrl + C दबाता हूं तो ऐप तत्काल बंद हो जाता है (प्रक्रिया समाप्त होती है)।

जब मैं ऐप को सेवा के रूप में चलाता हूं और इसे रोकने के लिए चुनता हूं, तो एमएमसी तुरंत कहता है कि सेवा बंद हो गई है। हालांकि, प्रक्रिया अभी भी चल रही है और रोकने के लिए लगभग एक मिनट लगती है। मुझे समय लेने में कोई समस्या नहीं है, लेकिन मैं एमएमसी की प्रतीक्षा करना चाहता हूं जैसे कि यह अन्य सेवाओं के लिए करता है। वर्तमान में मैं फिर से सेवा शुरू कर सकता हूं, जबकि पुरानी प्रक्रिया अभी भी चल रही है और यह विशेष संसाधनों के साथ त्रुटियों का उत्पादन करती है। एमएमसी में "पुनरारंभ" भी काम नहीं करता है क्योंकि यह प्रक्रिया समाप्त होने की प्रतीक्षा नहीं करता है।

मैं अपनी प्रक्रिया को कैसे इंतजार कर सकता हूं या कैसे पता लगा सकता हूं कि कौन से थ्रेड/प्रक्रिया/विधियां समय लेती हैं?

उत्तर

2

नेट सेवाओं के लिए देखें: How to properly stop a multi-threaded .NET windows service?

WCF का उपयोग कर सेवाओं के लिए यह भी देखें: http://msdn.microsoft.com/en-us/library/ms734781(VS.85).aspx

+0

बहुत उपयोगी लिंक्स। मुझे आश्चर्य है कि मैं उन्हें नहीं ढूंढ सका। मैंने जानकारी को पहला लिंक बनाने की कोशिश की और जवाब देने के बाद मैं इसे स्वीकार करने में सक्षम था कि यह काम करता है। – ZoolWay

+0

हां यह काम किया। 'ऑनस्टॉप()' में सभी धागे को रोकने के लिए यह मेरे लिए किया गया - जैसे .NET सेवाओं के बारे में पहले लिंक में प्रस्तावित। धन्यवाद! – ZoolWay