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

时间:2013-04-23 10:17:11

标签: c# visual-studio-2010 service

我已经创建了一个包含多个项目的解决方案。我有一个项目是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 PC上安装该服务,让它正常工作。在Visual Studio中运行解决方案时,一切都按预期的方式工作。 WPF应用程序是启动和创建CentralLogic类的实例的应用程序。即使我之后没有对UI做任何事情而只是“玩”硬件,一切都会起作用。因此,创建CentralLogic类的实例应该足以让整个解决方案运行,因为此类管理其他类。只创建安装程序,服务,甚至建筑物都出错了。我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

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

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

这也应该有帮助,Making an existing exe with gui into windows service但是因为你已经把你的项目打破了中途。