连续在后台运行控制台应用程序,直到系统关闭

时间:2018-12-18 22:34:42

标签: c# .net windows-console

我有一个基本的应用程序,要求用户“按任意键或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
      }
    }
 }

在类似的帖子中,人们建议的解决方案要么有点高级,要么对我不起作用,例如

  1. 进入Windows服务应用程序
  2. 将程序的.exe文件作为任务运行,
  3. 将此控制台应用输出为Windows应用,
  4. 作为Windows窗体应用程序启动VS项目,然后不调用任何窗体等。

但这对我不起作用。让我描述一下原因。我已经尝试了上面的选项3和4,但是我的应用程序完全消失/关闭,我检查任务管理器以为它可能正在后台运行,但不存在,这意味着它会立即关闭。

我觉得将应用程序更改为Windows服务会使ClickOnce应用程序变得复杂。至于2,人们建议将程序作为一个任务打开并隐藏窗口,但是我不确定如何在代码本身中做到这一点,而无需以.exe应用程序的形式外部调用它。 预先谢谢你。

2 个答案:

答案 0 :(得分:2)

您应该将应用程序开发为Windows Service

或者,您可以通过Task Scheduler将exe作为后台任务启动。如果将其设置为在启动时运行,即使它是表单应用程序,也不会显示ui。

答案 1 :(得分:1)

这与操作系统有关,您可以按以下方式运行控制台程序:

假设您将程序编译为program.exe,则可以在命令行中运行它。

START /B program.exe > log.txt

https://superuser.com/questions/198525/how-can-i-execute-a-windows-command-line-in-background