我有一个想要作为 Windows 服务运行的 Windows 应用程序 - 我该怎么做?
5 回答
您可以使用一个工具来执行此操作:XYNTService。
这是一项可以启动常规应用程序的服务,我们在工作中使用它,它也适用于 GUI 应用程序。由于该服务在本地 SERVICE 帐户下运行,因此您无法看到 GUI 或以任何方式访问它,因为它正在另一个 winlogon 会话中运行。
Quick-n-dirty 方式,使用 Windows 资源工具包中的 INSTSRV 和 SRVANY 工具: 如何创建用户定义的服务
您拥有源代码的 .Net 应用程序的解决方案:
如果您的项目有一个分离良好的控制器和业务逻辑 (MVC),这将非常容易和快速。
首先,在您的解决方案中创建一个新项目并选择“Windows 服务”。这将为您创建一个带有包含 Main 的 Program 类的新项目。
在 Main 中,您需要附加 Service Base 类。
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
ServiceBase.Run(ServicesToRun);
}
}
在您的服务内部(您需要覆盖的扩展 ServiceBase 的服务:
protected override void OnStart(string[] args)
要调用您的控制器来开始工作,或者您可以简单地从 while(...) 开始使用线程。
否则,Patrick Cuff 的链接是一个很好的链接。
除了已经推荐的 XYNTService 和 SRVANY 之外,您还应该考虑AlwaysUp,这是一种商业产品,旨在将任何应用程序作为 Windows 服务运行。您可以免费试用 30 天,以确保它能为您完成这项工作。
祝你好运!