我在这里阅读了很多关于stackoverflow,评论,意见和各种想法的内容。但无论如何,我真的需要一种解释的方法来退出我在C#上的控制台应用程序(我在VS2010框架4上),并出现自定义错误。
我现在能读到的最好的东西是VB:
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
并使用ExitProcess(1)进行错误或使用ExitProcess(0)
所以我的问题是:
以前的一些问题被标记为参考书目:
What is the command to exit a Console application in C#?
http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx
答案 0 :(得分:19)
你可以:
答案 1 :(得分:3)
1)Environment.Exit几乎相同,
2)我猜Windows自动化服务?尝试一下,但我想我不会按预期工作......
3)看看这个Windows Exitcodes
4)这很好,但你也可以使用.Net内置方法
答案 2 :(得分:2)
Environment.Exit
将执行与ExitProcess
相同的操作(加上可能还有一些.Net清理) - 最终结果是相同的。
至于退出代码,它们意味着你想要的任何东西(在合理范围内) - 0是'成功',!= 0是'不成功'但是你可以使用你喜欢的任何非0值意味着你喜欢什么,这取决于程序使用该值来做一些有用的事情。
答案 3 :(得分:2)
以下是使用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.
有关详情的更多退出代码,请参阅此处http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
答案 4 :(得分:1)
-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
的管理活动。
答案 5 :(得分:0)
我正在回答“退出代码是什么意思,-1,0,1,以及它们的区别是什么?”
不同的退出代码只是与调用者应用程序通信状态的一种方法。 例如,在我参与的其中一个项目中,我们使用99作为警告代码。只要涉及的所有应用程序在收到99或其他内容时知道该怎么做就没问题。在该应用程序中,如果呼叫者接收到0或99之外的任何其他内容,则呼叫者应该中止,在99的情况下,它可以自由继续。