संपादित करें: यह केवल .exe चलाते समय काम करता है, सेवा के रूप में नहीं चलते समय। एक विकल्प के रूप में आप एक विन्यास मूल्य के रूप में विकल्प जोड़ने और स्टार्ट-अप पर इसे पढ़ा (जो शायद बेहतर अभ्यास वैसे भी है) कर सकते हैं:
using System.Configuration;
// snip
string foobar = null;
HostFactory.Run(configurator =>
{
foobar = ConfigurationManager.AppSettings["foobar"];
// do something with fooBar
configurator.Service<ServiceClass>(settings =>
{
settings.ConstructUsing(s => GetInstance<ServiceClass>());
settings.WhenStarted(s => s.Start());
settings.WhenStopped(s => s.Stop());
});
configurator.RunAsLocalService();
configurator.SetServiceName("ServiceName");
configurator.SetDisplayName("DisplayName");
configurator.SetDescription("Description");
configurator.StartAutomatically();
});
प्रलेखन आप इस में आदेश निर्दिष्ट करने की आवश्यकता के अनुसार पैटर्न:
-foobar:Test
आप भी अपनी सेवा विन्यास में परिभाषा जोड़ने की जरूरत:
string fooBar = null;
HostFactory.Run(configurator =>
{
configurator.AddCommandLineDefinition("fooBar", f=> { fooBar = f; });
configurator.ApplyCommandLine();
// do something with fooBar
configurator.Service<ServiceClass>(settings =>
{
settings.ConstructUsing(s => GetInstance<ServiceClass>());
settings.WhenStarted(s => s.Start());
settings.WhenStopped(s => s.Stop());
});
configurator.RunAsLocalService();
configurator.SetServiceName("ServiceName");
configurator.SetDisplayName("DisplayName");
configurator.SetDescription("Description");
configurator.StartAutomatically();
});
AddCommandLineDefinition() से पहले और // कुछ करने के बाद आपको निम्न पंक्ति जोड़ने की आवश्यकता है: configurator.ApplyCommandLine(); – Todd
क्या आप ServiceClass पर कमांडलाइन तर्क जोड़ सकते हैं? मैं ऐसा करने की कोशिश कर रहा हूं, लेकिन जब मैं इसे सेवा के रूप में शुरू करता हूं तो यह काम नहीं करेगा। – fuLLMetaLMan
हां। यह सेवा के रूप में स्थापित/शुरू करते समय काम नहीं कर रहा है। foobar खाली है। @fuLLMetaLMan: क्या आपको कोई जवाब मिला? –