我创建了一个Winforms C#应用程序来生成线程并在我们的生产服务器上运行作业。我在winforms应用程序中创建了作业,因为我需要一个GUI来配置和运行服务。
我们最近更换了服务器,并且在一定的空闲时间后注销并且应用程序已关闭,所以我需要制作Windows服务以使其即使在我注销时也能继续运行。问题是我需要GUI。
使用GUI界面创建Windows服务的最佳方法是什么(因为我需要在我注销时运行它们)?
答案 0 :(得分:0)
如果您创建真实Windows Services
您可以使用the ServiceController class
开始,停止并获取有关该服务的信息修改强>
如果您需要服务中的数据,则可以使用WCF或Socket与服务进行通信。另一种选择是将服务结果发布在知名文件夹中的文件中。
答案 1 :(得分:0)
在用户会话中生成Windows服务(= Interactive Windows service)不是一个好主意,并被视为漏洞。我在项目中通过在GUI和服务部分中拆分应用程序解决了这个问题,就像肯尼所说的那样。他们通过WCF进行通信。另一种可能性是Memory-Mapped files。
答案 2 :(得分:0)
如果您想要一种简单的方式在流程之间进行交谈,您还可以使用NamedPipeServerStream和NamedPipeClientStream。 这项技术很老,不是很聪明,但很容易使用(如果你知道C#中的流管理)并且速度很快。
唯一的缺点是他们没有开箱即用的对话。但为此我使用XML序列化。
为了保持简单,我总是使用String []对象,我在接收器端解析,就像我在应用程序的void main(String [] args)中所做的那样
使用服务,您也可以使用CustomCommands,但这只要求服务在不给出参数的情况下生成方法。 除非您将参数存储在某个地方(即:XML文件),您的服务可以访问它们