[英]Start WinForms application from Windows Service
我有一个(第三方)WinForms应用程序,我需要在Windows Server上保持24/7实时运行。 我的第一个想法是编写一个Windows服务,该应用程序将启动应用程序(使用System.Diagnostics.Process
),并在应用程序崩溃或服务器重新启动时重新启动它。
这有可能吗? 即使服务器上没有用户登录,我也需要启动它。 没有人登录时,具有用户界面的应用程序可以运行吗? 如果没有,是否有解决方法?
注意:我不需要以任何方式与应用程序交互,只需要启动它即可。
为什么需要保持24/7全天候运行的表单? 我可以想象这是一些可能性。
如果答案是#3,则Windows服务不是正确的答案,您尝试做的任何事情都将变成一个巨大的黑客。 如果是#1或#2,则需要考虑将单个应用程序分为两个。
对于重复执行的任务,最简单的解决方案是开发控制台应用程序并在Windows Task Scheduler中设置Task。 这比Windows服务更容易管理和调试。 如果您尝试运行某种套接字服务,那么典型的方法是创建一个没有GUI的应用程序,唯一的访问方法是通过套接字连接。 如果WinForm关闭,套接字服务将继续运行,并且WinForm在重新打开时可以获取最新信息。
我建议您考虑另一种方法。 试图通过Windows服务向用户显示GUI并不是一件容易的事,我遇到了类似的情况,最后我不得不采用另一种方法。
为什么不能直接从Service中显示UI :这是由于Windows Vista和更高版本的Windows OS中引入了一些安全性实现。 微软禁止Windows服务直接与用户桌面进行交互,因为它导致了一些安全漏洞
-
我不需要以任何方式与应用程序进行交互
如果是这样,我认为应用程序不需要任何用户交互即可继续其操作,它将自己进行操作? 如果是的话,甚至可以使用command prompt
exe。
即使服务器上没有用户登录,我也需要启动它
我强烈建议您使用Windows Task Scheduler 。 这将使您的生活更加轻松。 它不需要任何用户手动启动程序,它可以在计算机启动/重新启动时启动您的程序,甚至您可以计划在特定的时间间隔运行程序。 您也可以检查其他好的.net任务调度库, quartznet是其中之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.