Winforms 将C#窗口应用程序作为窗口服务

Winforms 将C#窗口应用程序作为窗口服务,winforms,windows-services,Winforms,Windows Services,我有一个C#的桌面应用程序,我想让它成为一个窗口服务。是否可以将该应用程序作为windows服务?基本上,我想一个应用程序,显示图形用户界面时,需要和它去系统尝试,它也应该出现在服务。。。对于应用程序,仅举一个例子,我的应用程序有一个计时器和多行文本字段,它还与数据库交互,并从数据库中显示及时的状态,所以当我需要查看它时,我可以从系统启动GUI。试一下 任何形式的帮助都将受到高度赞赏。谢谢 无法在windows服务中显示GUI。 您可以做的是: a。将客户端逻辑与服务器逻辑分开,windows服

我有一个C#的桌面应用程序,我想让它成为一个窗口服务。是否可以将该应用程序作为windows服务?基本上,我想一个应用程序,显示图形用户界面时,需要和它去系统尝试,它也应该出现在服务。。。对于应用程序,仅举一个例子,我的应用程序有一个计时器和多行文本字段,它还与数据库交互,并从数据库中显示及时的状态,所以当我需要查看它时,我可以从系统启动GUI。试一下


任何形式的帮助都将受到高度赞赏。谢谢

无法在windows服务中显示GUI。 您可以做的是:

a。将客户端逻辑与服务器逻辑分开,windows服务将执行服务器端操作,并向客户端公开一个WCF API,该API将处理GUI相关问题

b。使用诸如Service-O-Matic之类的外部工具控制winforms应用程序,就像它是windows服务一样。见:


您需要分离应用程序。Windows服务和桌面。您需要在Windows服务中构建API挂钩,以允许桌面应用程序和服务之间的通信。我会为此推荐WCF


简而言之,Windows服务不应该与桌面交互。它将在与您登录的会话不同的单独会话中运行,即使您以运行服务的同一帐户登录

还要注意的是,UI计时器在windows服务上无法工作,任何在服务中显示GUI的尝试都会导致异常。我有一个应用程序想这样做,但它太复杂了,我还没有找到它。正如下面的答案所示,这并不是一件小事。对于更复杂的遗留项目,我也有这些问题,现在,我使用的是Service O-Matic,它不是免费的,但它可以完成任务。还有一些像RestartonCash这样的免费产品,它们并没有为meRight做好工作!在Windows服务常见问题解答中查找有关的其他详细信息有趣的是,我以前从未处理过交互式服务检测。我仍然不会使用它,因为这只是用户的另一个困惑点。我将修改我的不能到不应该。。。从技术上讲,它可以,但仅仅因为你可以,并不意味着你应该。