Laden...

Auf den Versuch die Anwendung zu beenden reagieren

Erstellt von Bake vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.161 Views
B
Bake Themenstarter:in
35 Beiträge seit 2008
vor 15 Jahren
Auf den Versuch die Anwendung zu beenden reagieren

Hi!

Meine Anwendung öffnet zunächst eine Form, läuft jedoch im Hintergrund weiter, wenn diese geschlossen wird. Ich möchte auf das Schließen der Anwendung (nicht nur der Form) reagieren. Dabei sollte es egal sein wie das Programm beendet wird (herunterfahren, Task-Manager, ...).

Ich weiß, dass es schon Threads zu diesem Thema gibt... die Umstände sind aber anders.

Danke im Voraus!

[EDIT]
Vielleicht hätte ich den Thread doch in "Basistechnologien und allgemeine .NET-Klassen" erstellen sollen... bin mir nicht ganz sicher wo das hingehört.

2.760 Beiträge seit 2006
vor 15 Jahren

Probiers mal mit Application.ApplicationExit.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Bake,

Dabei sollte es egal sein wie das Programm beendet wird (herunterfahren, Task-Manager, ...).

das ist aber nicht egal. Bewirkt alles was anderes.

Form.FormClosing
WindowsFormsApplicationBase.Shutdown
Und Process.Kill kannst du nicht so ohne weiters abfragen.

herbivore

B
Bake Themenstarter:in
35 Beiträge seit 2008
vor 15 Jahren

In den GUI Bereich habe ich den Thread schon absichtlich nicht reingestellt... Die Form ist nebensächlich... Ich möchte nicht auf das Schließen der Form reagieren... Im Prinzip ist es egal ob die Form nun da ist oder nicht.

Probiers mal mit Application.ApplicationExit.

Das war das Erste was ich versucht habe. Soweit ich weiß bezieht sich das Event auf die zugehörige Application und ist daher nicht allgemein gültig. Als so eine Application kann ich aber nur eine Form ausführen (Run() aktzeptiert nur Forms).

Ich habe da nicht die große Ahnung... kann sein, dass ich alles viel komplizierter mache als es wirklich ist.

Nach herbivores Beitrag scheint es mir aber gar nicht mehr so einfach zu sein.
FormClosing ist uninteressant und SessionEnding löst nicht in jedem Fall aus.

Gibt es da nicht noch eine andere Möglichkeit?

C
252 Beiträge seit 2007
vor 15 Jahren

Wie wärs mit Environment.Exit Methode. Evtl entspricht das deinen Vorstellungen.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo chavez,

Bake will die Anwendung nicht schließen, der will auf das Schließen der Anwendung reagieren.

Hallo Bake,

BTW: ich bin ja wirklich kein Fan von "früher war alles besser", aber dieses eine Problem war damals in OS/2 durch die ExitList wirklich cool gelöst:

You call DosExitList to add to the exit list a routine that is to be given control when a process is ended (or finishes its execution). Multiple routines can be added to the list. When the process is ending, OS/2 transfers control to each address on the list.

When an exit-list routine receives control, the parameter contains an indicator of why the process ended. The values returned are the same as those for termination codes returned by DosWaitChild or DosExecPgm requests. These values are:

TC_EXIT (0) - Normal exit
TC_HARDERROR (1)- Hard-error halt
TC_TRAP (2) - Trap operation for a 16-bit child process
TC_KILLPROCESS (3) - Unintercepted DosKillProcess
TC_EXCEPTION (4) - Exception operation for a 32-bit child process

Schade, dass es das Feature nicht in Windows geschafft hat, obwohl ja Windows NT auf dem Code basiert (oder soll ich sagen übereinstimmt), den MS für OS/2 3.0 entwickelt hat (als IBM und MS gerade noch gemeinsam an OS/2 entwickelt haben).

Oder vielleicht hat es das doch geschafft und ich weiß es nur nicht.

herbivore

B
Bake Themenstarter:in
35 Beiträge seit 2008
vor 15 Jahren

Hallo herbivore,

So was wäre jetzt wirklich gut 👅
Ist ja genau was ich brauche.

Wenn wirklich nichts weiter hilft könnte ich auch alles mit SessionEnding regeln aber optimal wäre das natürlich nicht 🙁

Es wundert mich schon ein bisschen, dass es nicht so leicht (oder gar nicht) möglich ist.

4.221 Beiträge seit 2005
vor 15 Jahren

@herbivore

Na das waren noch Zeiten ....

REXX als mächtiges Script-Instrument unter OS2.... (war aber Sch*** zu debuggen).

Gruss
Programmierhans

PS: OS2 1.3 / 2.0 / 2.1 / 3.0.... da wusste man noch wie man einen Nachmittag mit einem Stapel Disketten verbringen konnte.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

W
872 Beiträge seit 2005
vor 15 Jahren

Unter Unix kann man die Signale abfangen - klappt auch ganz gut - ist vor allem auch praktisch, wenn man ohne grossen Aufwand das Programm umschalten moechte - zum Glueck kann Log4Net auch dynamisch auf Aenderungen im Config-File reagieren...