如何在用C#编写的Windows服务中使用this.ServiceName以编程方式获取服务名称?当我尝试此操作时,它要求提供程序集引用,但不接受任何内容:

string path = this.ServiceName + ".config";


但它得到错误。

最佳答案

您的服务需要从ServiceBase继承System.ServiceProcess.dll

拥有该属性后,您将可以访问this.ServiceName属性。

样品:

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        string test = this.ServiceName;
    }

    protected override void OnStop()
    {
    }
}


如果要从Main()(程序类)访问它,则可以执行以下操作:

namespace WindowsService1
{
    static class Program
    {
        static ServiceBase[] _servicesToRun;

        static void Main()
        {
            _servicesToRun = new ServiceBase[]
            {
                new Service1()
            };

            string serviceName = _servicesToRun[0].ServiceName;

            ServiceBase.Run(_servicesToRun);
        }
    }
}

关于c# - 如何在用C#编写的Windows服务中获取ServiceName?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4657355/

10-13 01:59