【问题标题】:Environment.Exit producing a win32handle error randomlyEnvironment.Exit 随机产生 win32handle 错误
【发布时间】:2015-04-07 07:36:13
【问题描述】:

我创建了一个退出应用程序的简单 toolstrip 项目。

它将数据保存到datatable,然后返回MessageBox,表示保存成功,然后退出。

当我使用Environment.Exit(1) 时,它挂起,在阅读一些细节时,他会说线程可能正在等待、休眠等。

我尝试使用Environment.Exit(0) 并以某种方式工作,但我真的不知道为什么。 我知道这与退出代码有关,但作为“业余”程序员,我不知道这意味着什么。

有什么提示吗?可能是针对最终用户程序员的阅读资源?

【问题讨论】:

  • 您必须更好地记录您的问题。您必须启用非托管调试并在挂起时使用 Debug + Break All。如有必要,使用 Debug + Windows + Threads 窗口选择线程,很可能您需要查看终结器线程。您看到的调用堆栈是问题的基本文档。如果这一切听起来像 gobbledegook,它可能确实如此,那么根本不要使用 Environment.Exit()。终止程序的更友好的方法是 Application.Exit(),它会正常清理。
  • 谢谢,application.exit 确实做到了

标签: c# exit-code


【解决方案1】:

当您指定0 时,它表示成功,但当您指定除0 以外的任何内容时,它仅表示错误

您可以查看System Error Codes (0-499)

MSDN 还说:

参数

exitCodeType: System.Int32

提供给操作系统的退出代码。 使用 0(零) 表示该过程已成功完成。

【讨论】:

  • 你的意思是告诉我,我是故意造成错误的?另外,为什么错误是随机的?它不应该每次都给出错误吗?
  • 请改进你的帖子,现在它没有给出任何提示为什么 OP 的程序会挂起。
  • @HansPassant 当然不是。这就是我想弄清楚的。
  • 我的评论是针对拉胡尔,而不是你。 OP是你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多