c# – 运行WPF应用程序作为Windows服务

我们正在开发一个 Windows Presentation Foundation应用程序,我们希望能够作为Windows服务运行.

有人做过这样的事情吗?
可能吗?

我们不需要与桌面或任何GUI进行交互,只需安装一个可以使用GUI运行的应用程序,从命令行(即可以使用)或作为服务就可以了.

期待有趣的输入:-)

解决方法

作为经验法则,服务应该永远不会有任何UI.这是因为服务通常以非常高的权限运行,如果您不太注意输入,则可能会发生坏事情. (我认为Windows的最新版本不会让您根据服务创建UI,但我不是100%肯定的.)

如果您需要与服务进行通信,则应使用某种形式的IPC(WCF,管道,插槽,…).如果你想要一个简单的控制台程序,也可以是一个服务,我知道一个技巧来设置:

class MyExampleApp : ServiceBase
{
    public static void Main(string[] args)
    {
        if (args.Length == 1 && args[0].Equals("--console"))
        {
            new MyExampleApp().ConsoleRun();
        }
        else
        {
            ServiceBase.Run(new MyExampleApp());
        }
    }
    private void ConsoleRun()
    {
        Console.WriteLine(string.Format("{0}::starting...",GetType().FullName));

        OnStart(null);

        Console.WriteLine(string.Format("{0}::ready (ENTER to exit)",GetType().FullName));
        Console.ReadLine();

        OnStop();

        Console.WriteLine(string.Format("{0}::stopped",GetType().FullName));
    }
    //snip
}

如果您刚刚启动该程序,它将作为一项服务启动(如果您从控制台运行,则会向您发出警告),但是如果在启动该参数时添加了参数–console,程序将启动并等待您点击进入关闭.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...