Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C中的控制台应用程序退出#_C#_Console_Exit_Exit Code - Fatal编程技术网

C# 从C中的控制台应用程序退出#

C# 从C中的控制台应用程序退出#,c#,console,exit,exit-code,C#,Console,Exit,Exit Code,我在这里读了很多关于stackoverflow的东西,评论,观点和各种想法。但无论如何,我真的需要一种解释性的方法来退出C#上的控制台应用程序(我在VS2010 Framework 4上),并返回一个自定义错误 我现在能读到的最好的东西是在VB上: Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long) 并将ExitProcess(1)用于错误或ExitProcess(0) 因此,我的问题是: 与环境相

我在这里读了很多关于stackoverflow的东西,评论,观点和各种想法。但无论如何,我真的需要一种解释性的方法来退出C#上的控制台应用程序(我在VS2010 Framework 4上),并返回一个自定义错误

我现在能读到的最好的东西是在VB上:

Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
并将ExitProcess(1)用于错误或ExitProcess(0)

因此,我的问题是:

  • 与环境相同。是否退出(1)
  • 对于作为自动作业运行的应用程序,什么更好
  • 退出代码-1、0、1是什么意思?它们的区别是什么
  • 静态void ExitProcess(uint-uExitCode)呢
以前标记为参考书目的一些问题:


环境。退出
将执行与退出过程相同的操作(加上一些.Net清理)-最终结果是相同的

至于退出代码,它们表示您希望它们(在合理范围内)执行的任何操作-0表示“成功”!=0是“不成功的”,但您可以使用任何非0值来表示您喜欢的任何意思,这取决于程序使用该值来做一些有用的事情。

您可以:

  • 调用Environment.Exit(int)
  • 将Main函数重新声明为returning int,并从中返回值
  • 1) 环境。出口几乎相同

    2) 我猜是windows自动化服务?试试看,但我想我不会像预期的那样工作

    3) 看看这个,


    4) 这很好,但您也可以使用.Net内置方法。下面是一些在使用
    环境时特定于您的一个问题的ExitCode。Exit(ExitCode)

    有关更多ExitCodes的详细信息,请参见此处

    -一,。与环境相同。是否退出(1)

    这是.NET,如果不查看windbg的内部,你几乎不知道他们为它实现了哪个WINAPI
    ExitProcess
    Environment.Exit
    Environment.Exit
    可能包含多个ExitProcess

    -二,。对于作为自动作业运行的应用程序,什么更好

    如果您使用一些调度程序运行自动化作业,那么我也有其他想法,可以使用windows服务。这将消除exitprocess中的任何头痛问题

    -三,。退出代码-1、0、1是什么意思?它们的区别是什么

    它们只是告诉操作系统退出方式的代码。您可能见过程序员在出错时指定
    return 1
    ,或在成功时指定
    return 0
    。这使您可以自由使用其中任何一个

    -四,。静态void ExitProcess(uint-uExitCode)呢


    您可以在应用程序中自由使用非托管调用,并且肯定会错过
    环境中的管理活动。退出

    我回答的问题是“退出代码,-1、0、1是什么意思,它们的区别是什么?”

    不同的退出代码只是与调用方应用程序通信状态的一种方法。
    例如,在我参与的一个项目中,我们使用99作为警告码。只要所有相关的应用程序都知道当它们收到99或其他东西时该做什么,就可以了。在该应用程序中,如果调用者接收到0或99以外的任何内容,调用者应该中止,如果是99,则可以自由继续。

    您需要解释哪些内容在链接的帖子中没有解释?静态void ExitProcess(uint-uExitCode)
    在哪里定义?因为我发现一些页面说明了不同的内容,还有一些页面的代码错误。我无法找到一个MSDN帮助页面,只在C++上,就像这样:在我的代码被定义在类程序中,驻留静态空洞主,返回一个int从代码>主< /代码>,这是你的退出代码。你可能已经找到了说不同的东西的页面,但是已经有了关于StAcExcel的问题的答案,你应该期待这个答案是StackOverflow的“答案”。你不明白现有的答案是什么?可能是重复的,嗯,我现在明白了为什么0永远不会改变,但其他的一个是的,我看到了很多不同价值的例子“它们也意味着你想要的任何东西”-这是一个糟糕的想法。您正在windows上运行,然后使用windows代码。这是工程师们期望得到的。如果你想要一个没有人能理解错误代码的应用程序,那么你可以做任何你想做的事情。我看到了第二个解决方案,但我不赞成它,这对环境来说是肯定的?你贬低它是什么意思?这是一个完全可以接受的解决方案,您应该使用它,除非您有令人信服的理由没有tot。当您的应用程序无法启动并且windows返回错误代码99时,您会怎么做?你没有正确执行。请不要认为这些毫无意义。很可能你正在返回jibberish,但这并不意味着试图使用你的应用程序的人总是从你那里得到错误。最好遵守此处的错误消息,这里有足够的空间供您自定义消息:
    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.