Ich lese hier eine Menge Dinge über stackoverflow, Kommentare, Meinungen und jede Art von Ideen. Aber wie auch immer, ich brauche wirklich einen erklärten Weg, um meine Konsolenanwendung (ich bin auf VS2010 Framework 4) auf C # mit einem benutzerdefinierten Fehler zu beenden.
Das Beste, was ich jetzt lesen konnte, ist VB:
%Vor%und verwenden Sie ExitProcess (1) für einen Fehler oder ExitProcess (0)
Meine Fragen sind also:
Einige zuvor als Bibliografie markierte Fragen:
Was ist der Befehl zum Beenden einer Konsolenanwendung in C #? ?
Sie können:
1) Environment.Exit ist fast das gleiche,
2) Ich denke, der Windows-Automatisierungsdienst? versuchen Sie es, aber ich denke, ich werde nicht wie erwartet funktionieren ...
3) Sehen Sie sich diese Windows Exitcodes 4) Es ist nett, aber Sie könnten auch die integrierte .Net-Methode verwenden
Environment.Exit
macht dasselbe wie ExitProcess
(plus vielleicht einige .Net Bereinigung) - die Endergebnisse sind die gleichen.
Was Exit-Codes betrifft, meinen sie, was immer Sie wollen (im Rahmen des Zumutbaren) - 0 ist 'erfolgreich',! = 0 ist 'nicht erfolgreich', aber Sie können einen anderen Wert als 0 verwenden Es liegt an dem Programm, das diesen Wert verwendet, um etwas Nützliches damit zu tun.
-1. Ist dasselbe wie Environment.Exit (1)?
Das ist .NET, Sie wissen kaum, welche WINAPI sie dafür implementiert haben, ohne mit windbg nach innen zu gucken. Über die Ähnlichkeit in
ExitProcess
und Environment.Exit
. Environment.Exit
können mehr als ExitProcess enthalten.
-2. Was ist besser für eine Anwendung, die als automatischer Job ausgeführt wird?
Wenn Sie einen laufenden automatisierten Job mit einem Scheduler ausführen, habe ich auch eine andere Idee, stattdessen Windows-Dienste zu verwenden. Dadurch werden alle Probleme des Exitprozesses beseitigt.
-3. Was bedeutet die Exit-Codes, -1, 0, 1, und was sind ihre Unterschiede?
Sie sind nur Codes, um OS die Art des Beendens mitzuteilen. Möglicherweise haben Programmierer gesehen, dass return 1
bei einem Fehler oder return 0
bei einem Erfolg angegeben wurde. Dies macht es Ihnen frei, einen von ihnen zu verwenden.
-4. Was ist mit statischen void ExitProcess (uint uExitCode); ?
Sie können in Ihrer Anwendung nicht verwaltete Anrufe verwenden und Sie werden sicherlich die Verwaltungsaktivität von Environment.Exit
verpassen.
Ich beantworte die Frage "Was bedeutet die Ausgangscodes, -1, 0, 1, und was sind ihre Unterschiede?"
Unterschiedliche Beendigungscodes sind nur eine Methode, um den Status von Anruferanwendungen zu übermitteln. Zum Beispiel haben wir in einem meiner Projekte 99 als Warncode verwendet. Solange alle beteiligten Anwendungen wissen, was zu tun ist, wenn sie 99 oder etwas anderes erhalten, ist es in Ordnung. Wenn in dieser Anwendung der Anrufer etwas anderes als 0 oder 99 empfängt, sollte der Anrufer abbrechen und im Fall von 99 war es frei, fortzufahren.