2009-05-20 9 views
5

मैं .NET 2.0 में एक विंडोज़ सेवा लिख ​​रहा हूं।ऑनस्टार्ट विधि के भीतर किसी सेवा को कैसे रोकें?

मुझे OnStart() विधि के भीतर क्या करना चाहिए यदि किसी कारण से मैं अपनी सेवा शुरू नहीं करना चाहता हूं? क्या मैं बस बेस क्लास (ServiceBase) की Stop() विधि को कॉल कर सकता हूं? मैंने कोशिश की है और मुझे कुछ मजाकिया स्मृति पहुंच अपवाद मिल रहा है। क्या Stop() विधि को कॉल करने के लिए इसे अलग थ्रेड शुरू करना आवश्यक है?

उत्तर

8

आप ऐसा क्यों करना चाहते हैं? अगर कोई त्रुटि है, तो इसे इवेंट लॉग में लॉग करें और अपवाद फेंक दें। आपकी सेवा शुरू नहीं की जाएगी और उपयोगकर्ता को सूचित किया जाएगा कि कुछ बुरा हुआ।

+0

वास्तव में, यदि आप अपवाद फेंकते हैं, तो सेवा शुरू नहीं होगी। विंडोज सेवाएं यह सब आपके लिए संभालती है। – Noldorin

+0

ऐसे कई कारण हैं जिनसे कोई सेवा शुरू नहीं कर सकती है! तो शायद आप वास्तव में क्यों नहीं पूछ रहे हैं, बल्कि जवाब देने का सुझाव अपवाद फेंकना है? ServiceBase.ExitCode को सेट करने के बारे में - क्या वह सलाह/आवश्यक है? – Rory

+1

@ रोरी: सेवा शुरू करने में विफल होना तुरंत शुरू करना और रोकना एक अलग बात है। मैं सफलतापूर्वक और चुपचाप रोकने के खिलाफ हूँ। इवेंट लॉग में ExitCode लॉग किया जाएगा ताकि आप इसे सेट करने पर विचार करना चाहें। हालांकि इसकी आवश्यकता नहीं है। –

0

एक सेवा नियंत्रक का उपयोग करें और उसके माध्यम से इसे तुरंत बंद करें।

0

आप Environment.FailFast() का उपयोग कर सकते हैं। बस जागरूक रहें कि यह किसी भी कोशिश-अंत-अंत में ब्लॉक को अनदेखा करता है।

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

  • कोई संबंधित समस्या नहीं^_^