我有一个奇怪的应用程序用于开发和测试我需要一个Windows窗体应用程序,以便我可以监视它在做什么。对于生产,应用程序将从服务启动,不需要可见的UI。我真的不想重写应用程序。一旦它完成到一个控制台应用程序,所以我想保留它,但从服务启动它。
我的问题是这个应用程序在服务中运行良好吗?目前它有UI元素,我已经能够使用Process类(System.Diagnostics)从服务成功启动应用程序。
这种方法有什么问题吗?
答案 0 :(得分:2)
使用配置管理器为您的应用程序创建gui构建和服务构建,然后使用以下结构来控制应用程序的启动方式:
#ifdef GUI
// load gui
#else
// run as service
#endif
答案 1 :(得分:1)
我认为通常这样做的方式是拥有一个单独的GUI应用程序,以某种方式与服务进行通信。
答案 2 :(得分:1)
我认为没有问题。
如果应用程序是控制台应用程序,则您可以仅使用配置控制可见性。现在,您需要使用另一个应用程序(Winform)来执行相同的操作。
答案 3 :(得分:0)
如果您的逻辑位于一个单独的库中,并且您的GUI应用程序只是调用它,那么同样的控制台应用程序执行相同操作也应该是微不足道的。你只在一个地方改变你的逻辑,并有两个前端......
答案 4 :(得分:0)
您需要调整注册表Type
注册表位置中SYSTEM\CurrentControlSet\Services\YourServiceName
字段的值。请参阅this article。
正如旁注;服务并不意味着像那样工作 - 它们完全是在后台。
最好是公开某种外部控制API,例如可能通过网络套接字。然后,您可以在系统托盘或Hide
模式下运行单独的Windows窗体应用程序,并在每次从服务接收内容时弹出。