在C#中退出控制台应用程序的命令是什么?

26 浏览
0 Comments

在C#中退出控制台应用程序的命令是什么?

C#中用于退出控制台应用程序的命令是什么?

0
0 Comments

在C#中,控制台应用程序将在主函数运行结束时退出。可以使用"return"命令实现这一目的。

如果要返回一个错误代码,可以使用下面的方法,该方法可以从初始线程之外的函数中访问:

System.Environment.Exit(-1);

为什么使用负值?

负值表示向调用进程返回一个错误。这向调用应用程序表示这是一个错误而不是成功运行。返回0或正整数表示成功。

参考链接:[tutorialspoint.com/batch_script/batch_script_return_code.htm](https://www.tutorialspoint.com/batch_script/batch_script_return_code.htm)

0
0 Comments

C#中退出控制台应用程序的命令是什么?

问题的出现原因:用户想要知道在C#中如何退出控制台应用程序。

解决方法:根据可行性的顺序,有几种解决方法:

1. 通过从Program.Main方法返回一个int值。

2. 抛出一个异常,并且不在任何地方处理它(用于意外的错误情况)。

3. 为了强制终止程序,可以使用System.Environment.Exit(不可移植!请参见下面的内容)。

返回特定的退出码:可以像评论中提到的那样,使用具有int返回类型的Main方法来声明并返回错误代码。所以,除非您需要使用特定的退出码并且无法在Main方法中实现,否则不需要使用Environment.Exit。如果有任何未处理的异常传播到Main方法中,最好通过抛出异常并在Main方法中返回错误代码来避免使用Environment.Exit。如果应用程序是多线程的,您可能需要更多的样板代码来正确地使用退出码终止程序,所以最好只调用Environment.Exit。

不使用Environment.Exit的另一个理由是可重用性。如果您希望在使Environment.Exit无关的环境中重用代码(例如在Web服务器中使用的库),则该代码将不具备可移植性。在我看来,最好的解决方案仍然是始终使用异常和/或返回值来表示方法达到某个错误/完成状态。这样,您可以在任何.NET环境和任何类型的应用程序中始终使用相同的代码。如果您正在编写需要返回退出码或以类似于Environment.Exit的方式终止的应用程序,那么您可以继续包装线程到最高级别并根据需要处理错误/异常。

最后一种选择是不合适的。没有程序员希望通过抛出异常来退出程序。

我写的是“按照最合适的顺序”。此外,在某些情况下,抛出异常是正确的方式(例如当发生不应该发生且应用程序永远无法恢复的意外致命错误时)。我已经更新了答案以澄清这一点。

如果您在Main方法中,您可以返回0、1等,并将方法签名标记为返回int以返回错误代码,您不需要使用Environment.Exit来指定错误代码。

这取决于您在调用堆栈中的深度以及您是否在主线程中。调用Environment.Exit可能比在没有使用异常解开调用堆栈的情况下将程序返回到主函数中更简单(这对于后台线程是行不通的;无论是线程池是否吞掉异常还是将其未处理地抛出,无论哪种方式,主方法或线程中的任何catch逻辑都不会看到它)。

我改变了选项的顺序。抛出异常的优点是使代码更容易在不同的可执行环境中作为库进行重用。

0
0 Comments

问题的原因:用户想知道在C#中如何退出控制台应用程序的命令。

解决方法:可以使用Environment.Exit(0);Application.Exit

Environment.Exit(0)是更清晰的方法。

这对我来说非常完美,当我通过stackoverflow.com/a/7865126/1530166在控制台应用程序中添加了一个计时器时。即使使用stackoverflow.com/a/37029044/1530166Application.Exit也无法实现。

它更清晰,因为它向底层操作系统提供了一个更有用的错误代码,说明为什么退出。

然而,Environment.Exit要求您拥有SecurityPermissionFlag.UnmanagedCode权限,这可能对某些人来说很麻烦。

0