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

Posted

技术标签:

【中文标题】如何在后台运行 .NET 控制台应用程序【英文标题】:How to run a .NET console application in the background 【发布时间】:2011-02-10 19:01:22 【问题描述】:

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

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

【问题讨论】:

不是来自控制台应用程序本身,我认为您应该询问超级用户如何在调度程序中配置它。 如果您正在寻找 .net core 3 解决方案,请查看 this。 【参考方案1】:

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

没有更多的控制台窗口。

【讨论】:

我遇到了同样的问题,这个答案对我的帮助远远超过了接受的答案。 同意 - 这是一个很好的答案 - 真的很简单,而且效果很好 这个问题的完美解决方案,因为我已经创建了我的控制台项目,我只需要更改属性,而不是需要创建一个新项目的公认答案,完美,谢谢! 必须说这个解决方案更简单更好。谢谢 这非常适合隐藏控制台窗口,但会破坏我的“按任意键关闭”功能。事实上,因为我依赖控制台应用程序在运行几秒钟后才关闭。有没有办法让它继续下去?【参考方案2】:

简单!

这似乎令人难以置信,但它就像一种魅力。当您想要执行没有任何迹象的自定义任务时,我已将其用于一些设置项目。

将项目创建为 Windows 应用程序项目(这是困难的部分)。

切勿拨打任何形式的电话。就像在您的控制台应用程序中一样继续运行

class Program

    static void Main(string[] args)
    
        // Just don't call Application.Run(new frmMain(args));

        // ... your code
    
 

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

【讨论】:

【参考方案3】:

您可以使用 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);

【讨论】:

我正准备发布这个!隐藏窗口: public const int SW_HIDE = 0;恢复:public const int SW_RESTORE = 9;【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

以上是关于如何在后台运行 .NET 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台连续运行 C# 控制台应用程序

从 ASP.NET Core 中的控制器操作运行后台任务

如何让我的 Golang Web 服务器在后台运行?

linux 如何后台运行

ASP.NET Core 6框架揭秘实例演示[21]:如何承载你的后台服务

ASP.NET Core 6框架揭秘实例演示[22]:如何承载你的后台服务[补充]