c# - 在后台持续运行控制台应用程序,直到系统关闭
问题描述
我有一个基本应用程序,要求用户“按任意键或 Enter 退出”。以这种方式实现我的应用程序的目的是让它运行直到系统关闭或用户注销。但我想让它不可见,这样用户在按下另一个程序的键时不会意外关闭它。我的程序结构是:
using System;
namespace myApp
{
class Program
{
private static void Main()
{
// Some code here
// do not close until closed manually
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
public static void Method1 ()
{
// some code here
}
public static void Method2 ()
{
// some code for method 2 here
}
}
}
在类似的帖子中,人们提出的解决方案要么不太先进,要么对我不起作用,例如
- 更改为 Windows 服务应用程序,
- 将程序的 .exe 文件作为任务运行,
- 将此控制台应用程序输出为 Windows 应用程序,
- 将 VS 项目作为 Windows 窗体应用程序启动,然后不调用任何窗体等。
但这对我不起作用。让我描述一下原因。我已经尝试了上面的选项 3 和 4,但我的应用程序完全消失/关闭,我检查任务管理器认为它可能在后台运行但它不存在,这意味着它会立即关闭。
我觉得将应用程序更改为 Windows 服务会使我的 ClickOnce 应用程序变得复杂。至于2,人们建议将程序作为任务打开并隐藏窗口,但我不确定如何在代码本身中做到这一点,而无需从外部调用它作为.exe应用程序。先感谢您。
解决方案
您应该将您的应用程序开发为Windows 服务。
或者,您可以通过任务计划程序将您的 exe 作为后台任务启动。如果您将其设置为在启动时运行,即使它是一个表单应用程序,也不会显示 ui。
推荐阅读
- ios - 当 git 提交时 Xcode 项目应该跟踪哪些文件
- php - 在 Debian 10 中安装 php7.4-cgi
- python - 如何处理在窗口生成的csv末尾附加的空行?
- amazon-web-services - 使用 AWS 控制台自动激活接收账单警报选项
- docker - docker pull 失败,出现 503
- networking - OSPF 区域拓扑
- regex - 如何使用 RegExp 查找大写字母?
- javascript - 如何优化以下 JavaScript 函数
- android - CameraX - 取消绑定预览用例时崩溃
- ios - 如何在 alamofire 5.0.2 版本中设置自定义超时