[C#] Console Exit

04/09/2013 23:17 Xyooz#1
Hm. Ich versuche dem Close Button ([Only registered and activated users can see links. Click Here To Register...]) meiner Konsolenanwendung eine neue Funktion zu zuweisen bzw. das "schließen" zu unterbrechen/abzufangen. Hab schon viel gegooglet, aber nur Ideen/Code Schnipsel zu Windows Forms Anwendungen gefunden. Gibts da überhaupt ne Möglichkeit das abzufangen ?
04/09/2013 23:34 Syc#2
[Only registered and activated users can see links. Click Here To Register...]

scheint aber unter win7 nicht mehr hinzuhauen
04/10/2013 23:10 Xyooz#3
Quote:
Originally Posted by Сry View Post
[Only registered and activated users can see links. Click Here To Register...]

scheint aber unter win7 nicht mehr hinzuhauen
Ja, das hatte ich auch schon gefunden. Naja, ich machs nach der Methode und dann starte ich einfach aus der switch Anweisung ne neue Anwendung die dann meinen Exit-Code ausführt. Sollte es da elegantere Möglichkeiten geben .. ich bin für alles offen.
04/10/2013 23:27 Schlüsselbein#4
Abfangen muss auch unter C# funktionieren.
Für C/C++ gibts die Funktion atexit.

Hier mal ein Beispiel:
Code:
#include <iostream>
#include <chrono>
#include <thread>
#include <cstdlib>

void exit_hook();

int main()
{
	// register callback
	std::atexit(&exit_hook);
	// do something..
	std::this_thread::sleep_for(std::chrono::seconds(3));
}

void exit_hook()
{
	// clean up...
	std::cout << "exiting...\n";
}
Du könntest dir jetzt halt mal ne Implementation der stdlib suchen und dort nachsehen, wie die Funktion intern funkioniert.
04/11/2013 07:28 Atomix74#5
Sali

ich habe zwar keinen blassen Schimmer von der Windows-Programmierung.
Aber unter Unix fange ich solche Events (exit, abort) mit dem EventHandler ab, um vor dem beenden noch offenen Dateien sauber zu schliessen TCP-Sessions zu beenden.

Für Dich könnte das diese Funktion sein:

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]


Edit: Spasses halber gerade mal in eine Windows VM getestet, funktioniert nicht in der Console. Sry.
04/11/2013 19:58 #SoNiice#6
Habe in meinen etlichen Jahren noch nie mit Konsolenanwendungen gearbeitet, gibt's dort vllt. ein OnClose Event?

Take this:

[Only registered and activated users can see links. Click Here To Register...]
04/13/2013 17:41 ĤΛƇҠ#7
Nein, ist ja keine Forms Anwendung. Schau mal ob eine Eigenschaft wie

this.FormBorderStyle

Existiert.
04/13/2013 19:45 #SoNiice#8
Ich habe ihm doch bereits die Lösung gegeben.
04/15/2013 20:36 Twist'#9
Meinst du so ?

PHP Code:
    void InitializeControls()
    {
    
Button btnKlick = new Button();
    
btnKlick.Text "Klick!";
    
btnKlick.Click += new EventHandler(btnKlick_Click);
     
    
this.Controls.Add(btnKlick)
    }
     
    
void btnKlick_Click(object senderEventArgs e)
    {
    
Close(); //zum schließen der Anwendung
    
MessageBox.Show("Hallo"); //Optional auch eine Meldung erscheinen lassen
    

04/15/2013 22:17 Schlüsselbein#10
Du hast wohl nichtmal den Threadtitel, geschweige denn den Post gelesen, oder?