如何在C#控制台应用程序显示控制台窗口前执行例程?
在C#控制台程序中实现控制台窗口显示前运行例程
根据需求不同,有两种可行方案:
方案1:完全隐藏控制台窗口,先执行例程再显示
如果需要在用户看不到控制台窗口的情况下完成预执行逻辑,可通过修改项目输出类型+手动创建控制台窗口实现:
- 修改项目属性:右键项目 → 应用程序 → 输出类型,选择「Windows应用程序」
- 在代码中调用Windows API手动创建控制台窗口,示例代码如下:
using System; using System.Runtime.InteropServices; namespace ConsolePreRunDemo { class Program { [DllImport("kernel32.dll")] private static extern bool AllocConsole(); static void Main(string[] args) { // 这里放置需要提前运行的例程 ExecutePreConsoleTasks(); // 手动创建并显示控制台窗口 AllocConsole(); Console.WriteLine("预执行任务完成,控制台已就绪"); Console.ReadLine(); } private static void ExecutePreConsoleTasks() { // 示例:模拟耗时初始化操作(如加载配置、初始化数据库连接) System.Threading.Thread.Sleep(3000); } } }
方案2:允许控制台窗口提前显示,但在输出内容前执行例程
如果不介意控制台窗口提前显示(仅空白无内容),直接将预执行逻辑放在Main方法最开头即可,确保在任何控制台输出代码之前执行:
using System; namespace ConsolePreRunDemo { class Program { static void Main(string[] args) { // 先执行预运行例程 LoadAppSettings(); InitializeServices(); // 之后再进行控制台交互 Console.WriteLine("初始化完成,开始程序逻辑"); Console.ReadLine(); } private static void LoadAppSettings() { // 读取应用配置文件 } private static void InitializeServices() { // 初始化依赖服务 } } }
注意事项
- 方案1中,必须调用
AllocConsole()才能正常使用Console类的输入输出方法; - 若预执行例程耗时较长,方案1的用户体验更优,不会出现长时间空白控制台的情况。
内容的提问来源于stack exchange,提问作者jocoder
相关产品推荐
相关产品推荐

