En précisant le Code d'Erreur retourné sur la fermeture de l'Application
Comment le code d'erreur retourné être spécifié sur la fermeture de l'application? Si c'était un VC++ de l'application, j'ai pu utiliser le SetLastError(ERROR_ACCESS_DENIED)
-- return GetLastError()
Api. Est-il un moyen de le faire en C#?
static int Main(string[] args)
{
Tool.Args = args;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Download_Tool());
return Tool.ErrorCode;
}
Comment le Tool.ErrorCode
valeur intelligably? Si je tente quelque chose comme Tool.ErrorCode = ERROR_ACCESS_DENIED
, j'obtiens une erreur "Le nom ERROR_ACCESS_DENIED n'existe pas dans le contexte actuel." Merci.
DES INFORMATIONS SUPPLÉMENTAIRES
Mon exemple est simplifié. Est-il un moyen de quelque chose comme ceci:
Tool.ErrorCode = ERROR_ACCESS_DENIED;
return Tool.ErrorCode;
...qui génère une compilation d'erreur, plutôt que de ceci:
Tool.ErrorCode = 5;
return Tool.ErrorCode;
...qui fonctionne, mais utilise un "nombre magique." Je voudrais éviter l'utilisation de numéros de magie.
OriginalL'auteur Jim Fell | 2010-07-08
Vous devez vous connecter pour publier un commentaire.
http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx
Mise à jour
La raison pourquoi vous obtenez une erreur de compilation avec "ERROR_ACCESS_DENIED" c'est parce que vous n'avez pas défini. Vous devez définir vous-même:
Ensuite, vous pouvez utiliser:
Mise à jour 2
Si vous êtes à la recherche d'un ensemble prêt à l'emploi winerror.h constantes pour votre C#, puis ici, il est:
http://www.pinvoke.net/default.aspx/Constants/WINERROR.html
Je serais probablement modifier la GetErrorName(...) la méthode pour faire quelques mise en cache si, par exemple:
J'aimerais savoir pourquoi il a été rejeté. J'espère que ce n'était pas après la question a été mis à jour. Je ne suis pas un lecteur d'esprit... Qui serait assez pauvres.
Microsoft a déjà ces codes d'erreur définis quelque part. Dans un VC++ de l'application, ils peuvent être consultées par
#include "Winerror.h"
. N'est-il pas quelque chose de similaire pour le C#? msdn.microsoft.com/en-us/library/ms681381(SV.85).aspxÀ ma connaissance non, il n'est pas. Dans le passé, lorsque vous faites PInvoke, j'ai simplement pris des fichiers d'en-tête et de l'extraire les constantes en C# classe d'assistance pour obtenir la parité, vous êtes après. C# en pas Win32.
J'ai mis à jour la réponse à inclure un lien vers le code C# pour une classe qui a toutes les winerror.h constantes. HTH.
OriginalL'auteur Tim Lloyd
Ensemble
Environment.ExitCode
.Voir MSDN pour l'Environnement.ExitCode Propriété
Le problème avec ce bout de code est que la valeur de
Environment.ExitCode
est ignoré si leMain
méthode renvoie autre chose que nulle (c'est à direint
dans ce cas).J'ai changé l'extrait de code de retour nul, de sorte que l'Environnement.ExitCode ne seront pas ignorés.
OriginalL'auteur Jon Adams