从C#中的控制台应用程序退出
我在这里阅读了很多关于stackoverflow,评论,意见和各种想法的东西。 但无论如何,我真的需要一种解释的方法来退出我在C#上的控制台应用程序(我在VS2010框架4上),并带有自定义错误。
我现在能读到的最好的东西是VB:
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
并使用ExitProcess(1)进行错误或ExitProcess(0)
所以我的问题是:
- 是否与Environment.Exit(1)相同?
- 对于作为自动作业运行的应用程序,有什么好处?
- 什么意思是退出代码,-1,0,1,它们的区别是什么?
- 那么静态void ExitProcess(uint uExitCode); ?
以前的一些问题标记为参考书目:
在C#中退出Console应用程序的命令是什么?
http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx
您可以:
- 调用Environment.Exit(int)
- 将Main函数重新声明为返回int,并从中返回值。
1)Environment.Exit几乎相同,
2)我猜Windows自动化服务? 尝试一下,但我想我不会按预期工作……
3)看看这个, Windows Exitcodes
4)这很好,但你也可以使用.Net内置方法
Environment.Exit
将执行与ExitProcess
相同的操作(加上可能还有一些.Net清理) – 最终结果是相同的。
至于退出代码,它们意味着你想要的任何东西(在合理范围内) – 0是’成功’,!= 0是’不成功’但是你可以使用你想要的任何非0值来表示你喜欢的任何东西,它就是使用该值对程序执行一些有用的操作。
以下是使用Environment.Exit(ExitCode)
时特定于您的一个问题的一些Environment.Exit(ExitCode)
ERROR_SUCCESS 0 (0x0) The operation completed successfully. ERROR_INVALID_FUNCTION 1 (0x1) Incorrect function. ERROR_FILE_NOT_FOUND 2 (0x2) The system cannot find the file specified.
有关详细信息的更多ExitCodes,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
-1。 是否与Environment.Exit(1)相同?
这是.NET,你几乎不知道他们为它实现了哪个WINAPI而没有使用windbg进行内部隐藏。但是没有任何关于ExitProcess
和Environment.Exit
的相似性的文档。 Environment.Exit
可能包含多个ExitProcess。
-2。 对于作为自动作业运行的应用程序,有什么好处?
如果你使用一些调度程序运行自动化作业,而不是使用Windows服务的其他想法。这将消除退出过程的任何麻烦。
-3。 什么意思是退出代码,-1,0,1,它们的区别是什么?
它们只是告诉操作系统退出的代码。 您可能已经看到程序员在出错时指定return 1
或在成功时return 0
使您可以自由使用其中任何一个。
-4。 那么静态void ExitProcess(uint uExitCode); ?
您可以在应用程序中自由使用非托管呼叫,当然您也会错过Environment.Exit
的管理活动。
我正在回答这个问题“退出代码是什么意思,-1,0,1,它们的区别是什么?”
不同的退出代码只是与调用者应用程序通信状态的一种方法。 例如,在我参与的其中一个项目中,我们使用99作为警告代码。 只要涉及的所有应用程序都知道当他们收到99或其他什么时该做什么就可以了。 在该应用程序中,如果呼叫者接收除0或99之外的任何其他内容,则呼叫者应该中止,并且在99的情况下,它可以自由继续。