c# - 从 Windows 服务启动 WinForms 应用程序

标签 c# winforms windows-services windows-server-2008

我有一个(第 3 方)WinForms 应用程序,我需要它在 Windows 服务器上保持 24/7 全天候运行。我的第一个想法是编写一个 Windows 服务来启动应用程序(使用 System.Diagnostics.Process)并在应用程序崩溃或服务器重新启动时重新启动它。

这可能吗?即使没有用户在服务器上登录,我也需要它启动。具有用户界面的应用程序可以在没有人登录时运行吗?如果否,是否有解决方法?

注意我不需要以任何方式与应用程序交互,我只需要启动它。

最佳答案

为什么您需要让表格全天候运行 24/7?以下是我能想到的一些可能性。

  1. 您需要经常发生特定行为。
  2. 它正在打开您希望其他应用程序连接到的端口。
  3. 您不希望员工能够退出应用程序。

如果答案是#3,那么 Windows 服务不是正确的答案,您尝试的任何事情都只会变成一个巨大的黑客攻击。如果它是 #1 或 #2,您需要考虑将您的单个应用程序分成两个。

对于重复性任务,最简单的解决方案是开发控制台应用程序并在 Windows 任务计划程序中设置任务。这比 Windows 服务更易于管理和调试。如果您尝试运行某种套接字服务,典型的方法是创建一个没有 GUI 的应用程序,访问它的唯一方法是通过套接字连接。如果 WinForm 关闭,socket 服务会继续运行,WinForm 重新打开时可以获取最新信息。

关于c# - 从 Windows 服务启动 WinForms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100751/

相关文章:

c# - 如何在服务器上设置后端应用程序

C# 想要限制表单可以移动到的位置

java - 停止未运行的 Windows 服务会导致构建失败

java - 当我们手动将它作为 Windows 服务运行时,如何更改 tomcat 的 java_opts?

c# - 延迟控制台应用程序几秒钟的最佳方法是什么

c# - 具有分层对象的 MVVM 的引用实现

c# - 从 Web 浏览器文档中的 JavaScript 调用 C# 代码

C# Tabcontrol 捕获 mousedown 事件

c# - Windows 窗体 PictureBox.Image 为空,即使窗体中显示了图像

C# WinForms ShowDialog() 调用任意方法