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

eto*_*bot 56 c# console-application

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

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

Han*_*ant 166

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

没有更多的控制台窗口

  • 我遇到了同样的问题,这个答案对我的帮助远远超过了被接受的答案. (6认同)
  • 这应该被标记为答案. (3认同)
  • 这个问题的完美解决方案,因为我已经创建了我的控制台项目,我只需要更改属性,而不是接受的答案,这需要创建一个新项目,完美,谢谢! (2认同)
  • 必须说这个解决方案更简单,更好.谢谢 (2认同)

Dan*_*olz 50

简单!

这似乎很难相信,但它作为一种魅力.当你想要执行没有任何迹象的自定义任务时,我已经将它用于一些安装项目.

  • 将项目创建为Windows应用程序项目(这是困难的部分).
  • 切勿拨打任何表格.只需在控制台应用程序中继续操作即可

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

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


JDM*_*DMX 10

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

  • 我准备发布这个了!隐藏窗口:public const int SW_HIDE = 0; 要恢复:public const int SW_RESTORE = 9; (2认同)

Eru*_*rup 9

将应用程序实现到Windows服务中怎么样?您可以将间隔设置为15分钟,并在timer_tick中运行该操作.


Cha*_*ith 6

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

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

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