.NET进程如何确定它是否作为Windows服务运行?

时间:2015-01-14 01:24:23

标签: c# .net windows-services

我有一个控制台.NET应用程序,它既可以从控制台运行,也可以作为Windows服务运行(在注册后)。该过程正在使用Topshelf .NET库。

在这两种情况下,入口点都是相同的 - Program.Main,但命令行参数是不同的。但是,我不想根据命令行参数做出决定。

这是Main使用的Topshelf代码:

var exitCode = HostFactory.Run(configurator =>
{
    configurator.UseNLog();
    configurator.RunAsLocalSystem();
    configurator.SetServiceName(Cfg.ServiceName);
    configurator.SetDescription(serviceDescription);
    configurator.SetDisplayName(serviceDisplayName);
    configurator.EnablePauseAndContinue();

    configurator.Service(factory =>
    {
        var bjeServer = DependencyResolver.Instance.GetInstance<IBJEServer>();
        bjeServer.Initialize();
        return (ServiceControl)bjeServer;
    });
});

if (exitCode != TopshelfExitCode.Ok)
{
    Environment.Exit(1);
}

// This may actually not terminate the process right away. The reason - Quartz may still be waiting for jobs to finish, which may take hours.
return 0;

如果解决方案是Topshelf特定的,我很好。一般的欢迎。

0 个答案:

没有答案