gpt4 book ai didi

c# - "Always running"控制台应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:21 25 4
gpt4 key购买 nike

我编写了一个当前在服务器上运行的控制台应用程序。它不需要任何用户输入(可以通过启动参数完成的启动参数除外)。

不幸的是,这个解决方案很糟糕,因为有人可能会不小心将其关闭(即,当使用远程桌面连接连接到服务器时,然后注销而不是简单地断开连接)。我需要它一直运行。

一种解决方案是将其变成windows服务,但目前使用SC或nssm或RunAsService等第三方工具失败(SC和Nssm创建服务但无法启动此类服务)。

我可以完全重写我的程序,使其成为一个合适的服务……但老实说,我正在为此苦苦挣扎(从我读到的不推荐的做法来看)。

最后我可以将它保留为控制台应用程序并使用任务调度程序来运行它 - 这看起来确实是一个不错的解决方案,但是(就像我提到的那样)我需要它一直运行(它可以被关闭等等 - 非常短的停机时间不是问题)。

我可以寻求任何有关设置此类任务的帮助吗?

已解决

经过几次尝试,我使用 Topshelf 将它变成了服务和 this great guide .

最佳答案

有两种方法可以用来在 Windows 中持续运行 .net 程序。两者各有优缺点。

window 服务

  • 推荐的解决方案
  • 计算机上的启动服务会启动吗(不需要有人登录)
  • 以重启的形式进行一些(有限的)错误处理
  • 适用于可以长时间运行的非常可靠的服务
  • 服务处理自己的状态
  • 很容易因内存泄漏而崩溃

IIS 应用服务器

  • 不推荐的解决方案
  • 从 Windows 启动,但可能无法启动您的应用程序
  • 需要较新的窗口以允许始终开启配置
  • Always on 配置复杂
  • 状态由 IIS 处理
  • 对糟糕的编程有更好的弹性,因为 IIS 会为您重新启动
  • IIS 也可能会为您终止您的线程(因此您的调度程序将停止工作)

我怀疑您被告知不推荐使用 Windows 服务的原因是它可能会因内存泄漏而崩溃。但是这个问题无论如何都会发生,因为您的程序需要运行很长时间(这不是 Windows 服务的问题,而是长生命周期进程的问题)。

关于c# - "Always running"控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com