我首先要说的是,我不是C#的初学者,但不是很多,需要帮助将值返回给main。或者更确切地说,“正确”的方式是什么。
我想从应用程序返回一个失败值(简单为-1),如果有任何异常并最终以catch结尾。在这种情况下,将信息传递给main以返回-1。
我解决它的方法是只添加一个静态全局变量mainReturnValue(以便能够从main访问它),并在catch中将其值设置为-1。
这是基于我当前代码的正确方法吗?
如果有人想知道应用程序是在没有用户交互的情况下执行的,那就是我需要捕获退出状态的原因。表单/ GUI只显示有关进度的信息,以防手动启动。
namespace ApplicationName
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{ ...
static int mainReturnValue = 0; //the return var
static int Main(string[] args)
{
Application.Run(new Form1(args));
return mainReturnValue; //returning 0 or -1 before exit
}
private void Form1_Load(object sender, System.EventArgs e)
{
the code..in turn also calling some sub functions such as DoExportData...and I want to be able to return the value to main from any function...
}
private int DoExportData(DataRow dr, string cmdText)
{
try { ... }
catch
{ mainReturnValue = -1; }
}
感谢。
答案 0 :(得分:8)
你可以这样做:
static int Main(string[] args)
{
Form1 form1 = new Form1(args);
Application.Run(form1);
return form1.Result;
}
然后在Form1
类上定义一个属性,可以在DoExportData
方法执行后设置其值。例如:
public int Result { get; private set; }
private void Form1_Load(object sender, System.EventArgs e)
{
Result = DoExportData(...);
}
private int DoExportData(DataRow dr, string cmdText)
{
try
{
...
return 0;
}
catch
{
return -1;
}
}
答案 1 :(得分:2)
How to: Get and Set the Application Exit Code 。
顺便说一句,退出代码0
表示成功,而任何> 0
表示错误。
答案 2 :(得分:1)
我会添加也这样的内容
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(CrashHandler);
static void CrashHandler(object sender, UnhandledExceptionEventArgs args) {
mainReturnValue = -1;
}
为了确保您的应用程序以您想要的方式“处理”甚至未处理的异常,因为我认为您的应用程序不仅仅是一个WindowsForm。