指定应用程序退出时的返回错误代码
如何在应用程序退出时指定返回错误代码?如果这是一个 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;
...它有效,但使用“幻数”。我想避免使用幻数。
How can the return error code be specified on application exit? If this were a VC++ application, I could use the SetLastError(ERROR_ACCESS_DENIED)
-- return GetLastError()
APIs. Is there a way to do this in C#?
static int Main(string[] args)
{
Tool.Args = args;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Download_Tool());
return Tool.ErrorCode;
}
How can the Tool.ErrorCode
value be set intelligably? If I try something like Tool.ErrorCode = ERROR_ACCESS_DENIED
, I get an error, "The name ERROR_ACCESS_DENIED does not exist in the current context." Thanks.
ADDITIONAL INFORMATION
My example is over-simplified. Is there a way to something like this:
Tool.ErrorCode = ERROR_ACCESS_DENIED;
return Tool.ErrorCode;
...which generates a compile-error, rather than this:
Tool.ErrorCode = 5;
return Tool.ErrorCode;
...which works, but uses a "magic number." I'd like to avoid the use of magic numbers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
http://msdn.microsoft.com/en-us/ library/system.environment.exit.aspx
更新
出现“ERROR_ACCESS_DENIED”编译错误的原因是因为您尚未定义它。您需要自己定义它:
然后您可以使用:
更新 2
如果您正在寻找一组现成的 winerror.h 常量来满足您的 C# 需求,那么这里是:
http://www.pinvoke.net/default.aspx/Constants/WINERROR.html
我可能会修改 GetErrorName(...) 方法来进行一些缓存,例如:
http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx
Update
The reason why you get a compile error with "ERROR_ACCESS_DENIED" is because you have not defined it. You need to define it yourself:
Then you can use:
Update 2
If you are looking for a ready-made set of winerror.h constants for your C# needs, then here it is:
http://www.pinvoke.net/default.aspx/Constants/WINERROR.html
I would probably modify the GetErrorName(...) method to do some caching though, e.g.:
设置
Environment.ExitCode
。请参阅 MSDN - Environment.ExitCode 属性
Set
Environment.ExitCode
.See MSDN - Environment.ExitCode Property