gpt4 book ai didi

c# - 指定应用程序退出时的返回错误代码

转载 作者:太空狗 更新时间:2023-10-30 00:46:29 26 4
gpt4 key购买 nike

如何在应用程序退出时指定返回错误代码?如果这是一个 VC++ 应用程序,我可以使用 SetLastError(ERROR_ACCESS_DENIED) -- return GetLastError() API。有没有办法在 C# 中执行此操作?

  static int Main(string[] args)
{
Tool.Args = args;

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Download_Tool());

return Tool.ErrorCode;
}

如何设置 Tool.ErrorCode 值?如果我尝试类似 Tool.ErrorCode = ERROR_ACCESS_DENIED 的操作,我会得到一个错误,“名称 ERROR_ACCESS_DENIED 在当前上下文中不存在。”谢谢。

附加信息

我的例子过于简单了。有没有办法像这样:

Tool.ErrorCode = ERROR_ACCESS_DENIED;
return Tool.ErrorCode;

...这会产生一个编译错误,而不是这个:

Tool.ErrorCode = 5;
return Tool.ErrorCode;

...有效,但使用“魔数(Magic Number)”。我想避免使用魔数(Magic Number)。

最佳答案

http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx

Environment.Exit(exitCode)

更新

你得到“ERROR_ACCESS_DENIED”编译错误的原因是你没有定义它。你需要自己定义:

const int ERROR_ACCESS_DENIED = 5;

然后你可以使用:

Environment.Exit(ERROR_ACCESS_DENIED)

更新 2

如果您正在寻找一组现成的 winerror.h 常量来满足您的 C# 需求,那么这里是:

http://www.pinvoke.net/default.aspx/Constants/WINERROR.html

我可能会修改 GetErrorName(...) 方法来做一些缓存,例如:

private static Dictionary<int, string> _FieldLookup;

public static bool TryGetErrorName(int result, out string errorName)
{
if (_FieldLookup == null)
{
Dictionary<int, string> tmpLookup = new Dictionary<int, string>();

FieldInfo[] fields = typeof(ResultWin32).GetFields();

foreach (FieldInfo field in fields)
{
int errorCode = (int)field.GetValue(null);

tmpLookup.Add(errorCode, field.Name);
}

_FieldLookup = tmpLookup;
}

return _FieldLookup.TryGetValue(result, out errorName);
}

关于c# - 指定应用程序退出时的返回错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com