如何在后台运行 .NET 控制台应用程序

问题描述 投票:0回答:8

我有一个用 C# 编写的控制台应用程序,计划使用内置的 Windows 任务计划程序每 15 分钟左右运行一次。

每次运行时,黑色控制台框会在执行期间弹出,然后关闭。我没有向控制台写任何东西。有没有办法让它在后台运行?

c# console-application
8个回答
191
投票

项目 > 属性 > 应用程序选项卡 > 将输出类型更改为“Windows 应用程序”。

不再有控制台窗口。


.NETCore aka .NET5+ 的更新:编辑项目文件并将 OutputType 更改为

WinExe
.


55
投票

简单!

这似乎很难相信,但它起到了魅力的作用。当你想在没有任何迹象的情况下执行自定义任务时,我已经将它用于一些设置项目。

  • 将项目创建为 Windows 应用程序项目(这是困难的部分)。
  • 切勿拨打任何形式的电话。就像在控制台应用程序中一样继续

    class Program
    {
        static void Main(string[] args)
        {
            // Just don't call Application.Run(new frmMain(args));
    
            // ... your code
        }
     }
    

这是因为 Windows 应用程序项目与控制台并没有真正的不同,除了第一个表单和引用之外。 这完全是隐藏的执行。试试吧!


12
投票

您可以使用 Windows API 来最小化控制台框。否则你可以使它成为一个实际上不加载表单的 Windows EXE 文件并调用

System.Windows.Forms.Application.Run()
.

最小化控制台的代码:

[DllImport( "user32.dll" )]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

public const int SW_SHOWMINIMIZED = 2;

IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_SHOWMINIMIZED);

9
投票

如何将应用程序实现为 Windows 服务?您可以将间隔设置为 15 分钟并在 timer_tick 中运行操作。


6
投票

如果您已经创建了一个 Windows 控制台应用程序,您只需将应用程序的输出类型更改为 Windows 应用程序即可。

在你的项目下: 转到属性 > 应用程序 选择“Windows 应用程序”作为输出类型。

这将是最小的影响,您可以让您的 Windows 任务计划程序运行相同的任务。


3
投票

如果它没有向控制台写入任何内容,您可以将其作为一项服务。 http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx


2
投票

只有当它计划以当前登录的同一用户身份运行时才会显示。使用长得离谱的密码在机器上创建另一个用户,将其设置为管理员(仅在需要时)并将任务安排为运行那个用户。


0
投票

这很简单。将任务设置为在不是您的登录帐户的帐户下运行。

© www.soinside.com 2019 - 2024. All rights reserved.