如何将我的C#winform程序转换为服务程序?

Gal*_*ali -1 c# service winforms

如何将我的C#winform程序转换为服务程序?

我需要我的程序将像服务一样工作(如监听器)

Dar*_*rov 5

Windows服务没有GUI,因此谈论将带有GUI的WinForms应用程序转换为Windows服务的唯一概念几乎没有意义.您可以查看以下有关使用.NET 编写Windows服务的文章.如果您需要托管一些在给定端口上侦听的sevrice,您可以查看在托管Windows服务托管WCF服务.


yas*_*891 5

正如Darin已经指出将UI应用程序转换为Windows服务在大多数情况下并不是一个好主意.

这就是说,可能存在(或者是)边缘情况,这可能是有用的.
到目前为止,我还没有尝试使用WinForms应用程序,但我认为这些步骤几乎与我曾经做过的步骤相同.
我编写了一个后端应用程序,它在99.99%的时间内作为Windows服务运行,但也可以作为控制台应用程序启动,以便更容易/更快地进行调试.

你要做的是:

  • 阻止应用程序生成多个实例(可选; 请参阅此文章了解如何实现此目的)
  • 请确保您的应用程序依赖于用户交互
  • 在启动应用程序时,检查它是作为Windows服务运行还是以用户模式运行

您可以通过查询来检测用户是否启动了应用程序Environment.UserInteractive- false如果作为Windows服务启动,则返回该应用程序,以及true在用户模式下启动时.

你的主要方法应该是这样的:

    static void Main()
    {
        // do common initialization, logging framework + the likes

        if (Environment.UserInteractive)
        {
            // start up in user mode
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new myForm());
        }
        else
        {
            // start up as Windows service
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new myService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
Run Code Online (Sandbox Code Playgroud)