相关疑难解决方法(0)

检测代码是否作为服务运行

有没有办法让.NET库检测它是否作为服务运行?

我的图书馆可以以任何方式运行.但是当它作为服务运行时,开发人员需要调用另一个方法来指示事实或某些功能无法正常工作.我希望我的库处理日志记录,如果在没有调用该方法的服务中使用它,则会写一个警告.

.net windows-services

7
推荐指数
3
解决办法
3892
查看次数

如何确定是否在Windows服务内启动?

目前我正在通过以下方式检查它:

if (Environment.UserInteractive)
    Application.Run(new ServiceControllerForm(service));
else
    ServiceBase.Run(windowsService);
Run Code Online (Sandbox Code Playgroud)

它有助于调试一点,也可以使用可执行文件运行服务.但现在假设该服务需要与用户桌面进行交互,因此我必须在属性中启用"允许服务与桌面交互".这当然打破了这种检查方式.还有另外一种方法吗?

c# windows-services

5
推荐指数
4
解决办法
1万
查看次数

如何在TopShelf中将HostControl实例传递给自定义主机服务?

这个问题已在其他地方被问过SO,但没有迹象表明我如何得到一个如实例所示的实例HostControl.我的TopShelf主程序如下所示:

    public static void Main()
    {
        HostFactory.Run(CreateHost);
    }

    private static void CreateHost(HostConfigurator x)
    {
        x.UseLog4Net();

        x.Service<EventBroker>(s =>
        {
            s.ConstructUsing(name => new EventBroker());
            s.WhenStarted(tc => tc.Start());
            s.WhenStopped(tc => tc.Stop());
        });

        x.StartAutomatically();

        x.RunAsNetworkService();
    }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

.net c# console-application topshelf

3
推荐指数
1
解决办法
2672
查看次数