首页 > 解决方案 > 在后台持续运行控制台应用程序,直到系统关闭

问题描述

我有一个基本应用程序,要求用户“按任意键或 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. 将 VS 项目作为 Windows 窗体应用程序启动,然后不调用任何窗体等。

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

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

标签: c#.netwindows-console

解决方案


您应该将您的应用程序开发为Windows 服务

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


推荐阅读