当前位置: 首页 > news >正文

.NET控制台应用程序中防止程序立即退出

在VB.NET控制台应用程序中防止程序立即退出,主要有以下几种常用方法,根据需求选择适合的方案:

方法1:等待用户输入(推荐)

Module Module1Sub Main()Console.WriteLine("程序开始运行...")' 这里是你的主程序逻辑DoWork()Console.WriteLine("按任意键退出程序...")Console.ReadKey() ' 等待用户按键End SubSub DoWork()' 你的业务逻辑代码Console.WriteLine("正在执行任务...")End Sub
End Module
### 方法2:无限循环(适用于后台服务)
Dim running As Boolean = TrueSub Main()Console.CancelKeyPress += Sub(sender, e)e.Cancel = True ' 防止Ctrl+C直接终止running = FalseEnd SubWhile running' 主循环逻辑Console.WriteLine($"{DateTime.Now}: 执行中...")Threading.Thread.Sleep(1000) ' 每秒执行一次End WhileConsole.WriteLine("程序正常退出")
End Sub

方法3:使用消息循环(适合GUI集成)

' 需要添加对System.Windows.Forms的引用
Sub Main()Console.WriteLine("服务已启动")Application.Run() ' 创建Windows消息循环' 在需要退出的地方调用 Application.Exit()
End Sub

方法4:自定义退出条件

Sub Main()Dim exitCode As Integer = 0DoTry' 执行主要逻辑ProcessData()Catch ex As ExceptionexitCode = 1running = FalseEnd TryThreading.Thread.Sleep(500) ' 避免CPU占用过高Loop While runningEnvironment.Exit(exitCode)
End Sub

高级方案:转换为Windows服务

' 需要安装 NuGet 包: Microsoft.Extensions.Hosting.WindowsServices
Imports Microsoft.Extensions.HostingModule ProgramSub Main(args As String())CreateHostBuilder(args).Build().Run()End SubPublic Function CreateHostBuilder(args As String()) As IHostBuilderReturn Host.CreateDefaultBuilder(args).UseWindowsService() ' 启用Windows服务支持.ConfigureServices(Sub(services)services.AddHostedService(Of WorkerService)()End Sub)End Function
End ModulePublic Class WorkerServiceInherits BackgroundServiceProtected Overrides Async Function ExecuteAsync(stoppingToken As CancellationToken) As TaskWhile Not stoppingToken.IsCancellationRequested' 持续执行的后台任务Await Task.Delay(1000, stoppingToken)End WhileEnd Function
End Class

调试技巧:

  1. 防止Visual Studio调试时退出
   Sub Main()If Debugger.IsAttached ThenConsole.WriteLine("调试模式 - 按任意键退出")Console.ReadKey()End IfEnd Sub
  1. 作为服务安装(使用SC命令):
    sc create MyService binPath="C:\Path\To\YourApp.exe"
    sc start MyService
    

选择方案的建议:

  • 临时调试:使用 Console.ReadKey()
  • 后台服务:使用无限循环或转换为Windows服务
  • 生产环境:推荐Windows服务方案(方法4)

注意:长期运行的程序需要添加适当的异常处理,避免因未处理异常导致意外退出。

http://www.lryc.cn/news/587794.html

相关文章:

  • 2025年大数据、建模与智能计算国际会议(ICBDMIC 2025)
  • spring-ai-alibaba 接入Tushare查询股票行情
  • 【C++进阶】---- 多态
  • SpringBoot3整合“Spring Security+JWT”快速实现demo示例与Apifox测试
  • 鸿蒙开发NDK之---- 如何将ArkTs的类型转化成C++对应的类型(基础类型,包含部分代码解释)
  • 系统化构建产品开发体系
  • androidstudio 高低版本兼容
  • 机构参与度及其Python数据获取示例
  • 迁移学习:知识复用的智能迁移引擎 | 从理论到实践的跨域赋能范式
  • 【Canvas与五星】六种五星画法
  • MIPI DSI (一) MIPI DSI 联盟概述
  • 【leetcode】231. 2的幂
  • ASP.NET Core中数据绑定原理实现详解
  • Android模块化架构:基于依赖注入和服务定位器的解耦方案
  • iOS如何查看电池容量?理解系统限制与开发者级能耗调试方法
  • H.264编解码(NAL)
  • 前端docx库实现将html页面导出word
  • 蜻蜓I即时通讯水银版系统直播功能模块二次开发文档-详细的直播功能模块文档范例-卓伊凡|麻子
  • 文档处理控件Aspose.Words教程:从 C# 中的 Word 文档中提取页面
  • 【飞牛云fnOS】告别数据孤岛:飞牛云fnOS私人资料管家
  • Python爬虫实战:研究PyMongo库相关技术
  • crawl4ai--bitcointalk爬虫实战项目
  • 嵌入式硬件篇---ne555定时器
  • 嵌入式硬件篇---晶体管的分类
  • Android 中 实现格式化字符串
  • Selenium动态网页爬虫编写与解释
  • 【Linux】Jenkins Lts 配置构建 Maven 项目
  • C++之哈希表的基本介绍以及其自我实现(开放定址法版本)
  • Maven 依赖原则和依赖冲突
  • 【Spring AI Alibaba】接入大模型