दिलचस्प इनपुट की ओर देख रहे यूआई के किसी भी प्रकार कभी नहीं होना चाहिए। ऐसा इसलिए होता है क्योंकि सेवाएं आमतौर पर बहुत अधिक विशेषाधिकारों के साथ चलती हैं और यदि आप अपने इनपुट से सावधान नहीं हैं तो बुरी चीजें हो सकती हैं। (मुझे लगता है कि विंडोज के नवीनतम संस्करण आपको एक सेवा से यूआई बनाने की अनुमति नहीं देंगे, लेकिन मैं 100% निश्चित नहीं हूं।)
यदि आपको किसी सेवा के साथ संवाद करने की आवश्यकता है, तो आपको कुछ प्रकार के आईपीसी का उपयोग करना चाहिए (डब्ल्यूसीएफ, पाइप, सॉकेट, ...)। आप एक सरल सांत्वना कार्यक्रम है कि यह भी एक सेवा हो सकता है चाहते हैं, मुझे लगता है कि सेट करने के लिए एक चाल के बारे में पता:
class MyExampleApp : ServiceBase
{
public static void Main(string[] args)
{
if (args.Length == 1 && args[0].Equals("--console"))
{
new MyExampleApp().ConsoleRun();
}
else
{
ServiceBase.Run(new MyExampleApp());
}
}
private void ConsoleRun()
{
Console.WriteLine(string.Format("{0}::starting...", GetType().FullName));
OnStart(null);
Console.WriteLine(string.Format("{0}::ready (ENTER to exit)", GetType().FullName));
Console.ReadLine();
OnStop();
Console.WriteLine(string.Format("{0}::stopped", GetType().FullName));
}
//snip
}
तुम सिर्फ कार्यक्रम शुरू करते हैं, तो यह एक सेवा के रूप शुभारंभ करेंगे (और यदि आप पर चिल्लाना आप इसे कंसोल से चलाते हैं), लेकिन अगर आप इसे शुरू करते समय पैरामीटर --console
जोड़ते हैं, तो प्रोग्राम लॉन्च होगा और आपके पास बंद करने के लिए एंटर दबाएगा।
स्रोत
2010-09-17 15:17:22
यह सीएलआई और सेवा के लिए ठीक है। –
कोड के लिए धन्यवाद। ऑनस्टॉप भाग को समझने के लिए सेवा सामग्री में थोड़ा गहरा खोदना है। – Remy