如何在C#中创建可以使用GUI*或*作为Windows服务运行的Windows应用程序?

Kei*_*Jr. 1 c# windows-services

我想用C#创建一个应用程序...:

  • 可以作为Windows应用程序运行,具有GUI(它将指示进度,状态等)

    要么

  • 可以作为Windows服务运行,无需GUI

可能吗?有人可以让我开始吗?

我想替代方案是我可以创建一个Windows服务,然后是一个单独的GUI应用程序,它可以轮询Windows服务以从中获取数据(进度,状态等).

在这种情况下......如何从我的GUI应用程序中获取Windows服务中的数据?

jer*_*mcc 6

我正在做类似你所要求的事情.我已对其进行了编程,以便在将命令行参数"/ form"发送到可执行文件时,它将弹出一个Windows窗体而不是作为服务运行.

至于运行后台作业本身,在这两种情况下,您都需要执行某种线程(可能带有计时器)来执行工作并将状态异步报告回表单.这将是关于创建线程GUI应用程序的完全不同的讨论主题.

"表单或服务"代码如下所示:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    private static void Main(string[] args)
    {
        if (args.Length > 0 && args[0] == "/form")
        {
            var form = new MainForm();
            Application.Run(form);
            return;
        }

        var ServicesToRun = new ServiceBase[]
            {
                new BackgroundService()
            };

        ServiceBase.Run(ServicesToRun);
    }
}
Run Code Online (Sandbox Code Playgroud)