You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 Worker Service停止报错:Environment.Exit(1)引发错误1067

.NET 6 Windows Service中Environment.Exit(1)的问题解析

一、Environment.Exit(1)的作用

Environment.Exit(1)是.NET中强制终止整个应用进程的方法:

  • 参数是退出码,1属于非零值,通常用来告知系统进程是因错误或异常情况终止的(与正常退出的0做区分)。
  • 调用该方法时,进程会立即停止,不会执行后续任何清理逻辑——比如finally块、对象析构函数,甚至服务框架自带的停止回调都不会触发。

二、错误1067的原因

Windows服务管理系统对服务的启停有严格的交互流程:
当你触发停止服务时,系统会向服务进程发送停止信号,等待服务通过.NET服务宿主(比如IHostedService的StopAsync方法)完成优雅停止,再主动通知系统“服务已正常停止”。

但如果服务代码中调用了Environment.Exit(1),进程会直接崩溃式终止——系统没收到服务正常停止的通知,就会判定进程是意外挂掉的,于是抛出“错误1067:进程意外终止”的提示。

三、补充说明

微软官方示例里的Environment.Exit(1),一般用于服务启动失败的场景:比如服务初始化时配置加载失败、依赖启动出错,这时候用它强制退出并返回错误码,让系统明确知晓服务启动失败。但如果把这个语句放到服务运行或停止的流程里,就会破坏正常的停止逻辑。

正确的服务停止方式

在.NET 6 Windows Service中,应通过实现IHostedService的StopAsync方法,完成资源释放、后台任务终止等清理操作,让服务宿主自然结束进程,而非直接调用Environment.Exit强制终止。

内容的提问来源于stack exchange,提问作者Rob Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:24:30