在Windows服务中转换我的应用程序

本文关键字:我的 应用程序 转换 Windows 服务 | 更新日期: 2023-09-27 18:10:33

我创建了一个具有多个项目的解决方案。我有一个项目是一个WPF应用程序。此应用程序与服务逻辑应用程序通信。该应用程序将所有流量重定向到针对特定对象的不同管理器。这些管理器通过几个类与数据库通信。解决方案中的另一个项目是,例如,可以与我连接的一些硬件进行通信的项目。

如何将此解决方案(减去WPF应用程序?)转换为Windows服务?这样所有的东西,比如硬件通信和数据库保存仍然在运行,我可以随时启动WPF UI来配置一些设置。

我真的不明白安装包是如何工作的。我创建了一个服务,它创建了一个中央逻辑类的实例。这个实例应该只创建一次,并且实例化这个类确保启动其他管理器类,以及数据库处理程序类和处理来自外部硬件的事件的类。简而言之,应用程序应该在实例化中心逻辑类时正常工作。所以在启动服务时真正应该做的就是实例化那个类。WPF UI应用程序仅用于配置,并不一定需要。

如何创建这样的服务并为其创建安装程序?下面的代码似乎是不够的:

protected override void OnStart(string[] args)
{
    log.Debug("Starting service...");
    serviceLogic = new CentralLogic();
    log.Debug("Successfully started service");
}

或者我正在创建错误的安装程序。有人能给我指路吗?

编辑:我已经研究过了,似乎我将使用WCF让UI与服务稍后进行通信。首先,我想把这个服务安装在我的Windows电脑上,让它正常工作。当在Visual Studio中运行解决方案时,一切都像它应该做的那样工作。WPF应用程序启动并创建CentralLogic类的实例。即使在那之后我没有对UI做任何事情,只"玩"硬件,所有的功能。因此,创建一个CentralLogic类的实例应该足以使整个解决方案运行,因为这个类管理其他类。只有在创建安装程序、服务,甚至可能是构建时出了问题。我不知道该怎么做

在Windows服务中转换我的应用程序

这是一个有用的演练http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.100).aspx

你可以在服务中构建UI,或者让另一个应用程序与服务对话,例如使用WCF。

这应该也有帮助,使现有的带有gui的exe进入windows服务,但因为你已经把你的项目分成了一半。