Windows窗体应用程序中的Windows服务

本文关键字:Windows 服务 应用程序 窗体 | 更新日期: 2023-09-27 18:19:40

我使用c#创建了一个windows窗体应用程序。现在我需要添加一个windows服务和这个应用程序。我添加了一个新的windows服务并添加了安装程序。我创建了windows安装程序并将其安装在电脑上,但该服务无法运行。我是C#的新手。请帮助我将此服务添加到安装程序中。

Windows窗体应用程序中的Windows服务

WinForms应用程序和Windows服务项目模板具有不同的引导程序代码(请参阅项目中的"Program.cs"文件)。

这个来自Windows窗体:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

这个来自Windows服务:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
    new Service1()
};
ServiceBase.Run(ServicesToRun);

如果您想将这些类型的应用程序组合到一个可执行文件中,您需要稍微修改引导程序代码:

// we need command line arguments in Main method
[STAThread]
static void Main(string[] args)
{
    if (args.Length > 0 && args[0] == "service")
    {
        // runs service;
        // generated bootstrap code was simplified a little
        ServiceBase.Run(new[]
        {
            new Service1()
        });
    }
    else
    {
        // runs GUI application
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

现在,在安装服务时,需要设置命令行参数来运行可执行文件:myExe service