2017-08-25 197 views
0

我是新来的Windows服务。我想制作一个Windows服务,作为我的软件的执行引擎。目前,我正在将XAML文件路径传递给执行引擎以开始执行。现在我想创建一个Windows服务来充当执行引擎。有没有办法在正在运行的服务中使用文件路径(作为参数)调用我的Run方法?Windows服务作为执行引擎

+0

XAML暗示一个GUI,不是吗?服务在他们自己的单独桌面会话中运行,您无法看到他们选择启动的任何应用程序的GUI。服务不适用于需要用户交互的任何事情。如果您想要某种交互式启动器,请从shell启动程序运行它。 –

+0

我的gui将按下运行按钮生成xaml文件,并且我将这个文件传递给执行引擎以进行进一步处理。我想分开我的执行引擎(作为一个Windows服务)和用户界面。运行按钮将调用Windows服务中的Run方法以进一步执行。有什么办法可以实现这一点,或者有任何其他方式来做到这一点。 –

+0

因此,您希望您的服务在应用程序启动时启动您的应用程序?服务并不意味着与任何用户相关的东西进行交互。 – Snicker

回答

0

正如其他人所说的,最好的方法是通过使用支持某种形式的通信机制的框架。正如其他人已经提到的那样,WCF对此很有帮助。

作为初始传递,我会做的是使用自托管的WCF服务(此代码项目条目提供了有关如何执行此操作的示例:https://www.codeproject.com/Articles/650869/Creating-a-Self-Hosted-WCF-Service)。开销是,你将不得不学习WCF的基础知识,以实现这一目标,尽管WCF很容易入门。

在这种情况下,什么自托管的WCF服务意味着你自己创建托管代码,而不是托管在另一个服务/位置。例如,您也可以在IIS中托管WCF服务。

在该示例中,作者正在创建一个SvcHost对象并在控制台应用程序中运行该对象。控制台应用程序用户交互式,但是,应该很容易将其转换为Windows服务。

希望这会有所帮助。