使用父子程序从C 入口点方法返回0值

在这篇文章中,我们查看了一个开发人员的实验代码,以及为什么他认为它可以帮助其他开发人员。请继续阅读以了解更多信息!

使用父子程序从C 入口点方法返回0值

大家好,我们知道在C#apps(Console和Win)中,入口点方法是指Main()程序。启动应用程序时,Main方法是第一个被调用的方法。它Main()的返回类型为“int”,大部分时间我们都注意到它的返回值Main()似乎为0.所以让我们理解这个返回值的幕后故事。

背景

一般来说,我们的假设是(在谷歌搜索之后)返回0 Main()表示应用程序的状态代码,例如“已成功退出”,或者如果它是1.然后退出时出现一些错误。但是,这些0/1值是用户定义的。

使用回报的真正好处0

如果控制台应用程序/ Windows应用程序默认结束其执行,GC将执行清理与应用程序相关的所有已分配资源。通过该Main()方法将0返回给OS的目的是什么?它与标志位有关吗?或者某种过程结束的事情?答案是不。因为OS从不介意返回值Main(),所以它总是认为特定的应用程序已成功完成。好的,那么返回0的用途是什么?是的,这里是父母和子进程等角色的到位。

当我们有父子计划时,可以使用此返回值。假设一个父程序称为子程序,一旦Child完成执行,那么Parent进程中的程序控件将查找Child Process的实际状态(仅假设)。它是否成功完成或在程序执行期间停滞不前?这可以通过使用返回的“退出代码”来验证Main()。这只退出代码(我们假设)作为标志位。让我用一个简单的例子来展示这个父母和子女计划。

将父程序视为Windows应用程序并将子程序视为控制台应用程序,请按照步骤操作以获取“退出代码”值(返回值)。

示例演示程序

  1. 打开Visual Studio(任何版本),并为Windows应用程序创建一个新项目。
  2. 创建项目后,请在上面的Windows应用程序之上添加另一个项目。
  3. 最终的Project结构如下所示:
使用父子程序从C 入口点方法返回0值

4.在“WindowsAppDemo”项目中,添加LabelBox,TextBox和Command按钮,如下所示:

使用父子程序从C 入口点方法返回0值

5.将以下代码添加到按钮单击事件,以便调用此项目解决方案中可用的控制台应用程序。

使用父子程序从C 入口点方法返回0值

在上面的代码中,首先,我们已经分配了ChildAppDemo(控制台应用程序)ProcessStartInfo,其中包含有关目标应用程序的信息。

6.现在,转到“ChildAppDemo”控制台应用程序,并通过Windows应用程序接收传递参数并将其打印在控制台上(如下所示)。

使用父子程序从C 入口点方法返回0值

7.目前,我们的项目设置如此:我们有一个父程序(Windows App),它在内部调用子程序(Console App)。使Parent程序(Windows App)成为一个启动项目并调试代码以查看返回值。我来告诉你

  • 执行Windows应用程序后,只需提供一些文本并单击“命令”按钮。看看这里的断点。子程序被调用并且仍在运行; 同时,如果你查看被调用进程类的断点,它会显示诸如“已退出”之类的属性,并且退出代码值似乎不可用。
使用父子程序从C 入口点方法返回0值

  • 点击进入控制台应用程序。正如我们所写,Console.ReadKey()所以Child App(控制台应用程序)仍在运行,回到父程序(Windows App)。只需在控制台应用程序上按Enter即可。除了输入外,不要按任何键。再看看断点,这次它将退出代码作为0.这是返回值的实际好处Main()。
使用父子程序从C 入口点方法返回0值

  • 最终输出:
使用父子程序从C 入口点方法返回0值

结论

我试图分享有关在Main()方法中返回0的详细信息。这只是一个实验计划。假设我们在一个解决方案中有级联控制台应用程序并且它已被逐个调用,这意味着我们可以使用“退出代码”属性来验证调用的级联项目。


分享到:


相關文章: