如何在后台运行 .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 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章