Main() am Schließen hindern

JJB

Cogito ergo brumm
Hallo,

ich habe eine console application, welche unter Umständen mehrere Fenster erzeugt (per show()).
Nach Abarbeitung der Main() schließt sich jedoch die console application bevor der User die Fenster geschlossen hat.

Ich möchte, dass die console application solange mit dem Beenden des Main() wartet, bis die Fenster geschlossen wurden.
Die Fenster werden generisch erzeugt Da sie gleichzeitig angezeigt werden müssen, kann ich nicht mit ShowDialog arbeiten.

Gibt es eine Möglichkeit die Main() am leben zu halten ?
Ich möchte ungern eine Loop einbauen, welche dauernd prüft, ob noch Fenster offen sind.

Wäre für jede Hilfe dankbar.
 
Zuletzt bearbeitet:

Shakie

Erfahrenes Mitglied
Du kannst die Forms innerhalb eines ApplicationContexts starten:
C#:
internal class myAppContext : System.Windows.Forms.ApplicationContext
{
    internal myAppContext()
    {
        System.Windows.Forms.Form f = new System.Windows.Forms.Form();
        f.Closed += new EventHandler(f_Closed);
        f.Show();
    }

    void f_Closed(object sender, EventArgs e)
    {
        ExitThread();
    }
}

class Program
{
    static void Main(string[] args)
    {
        myAppContext c=new myAppContext();
        Console.WriteLine("Starte nun ApplicationContext.");
        System.Windows.Forms.Application.Run(c);
        Console.WriteLine("ApplicationContext beendet.");
    }
}
Die Methode ExitThread beendet den ApplicationContext dann wieder.
 
Zuletzt bearbeitet:

JJB

Cogito ergo brumm
Unter WinForms gibt es direktere Möglichkeiten, ich weiß.
Aber ich bewege mich in der WPF Welt.

Ist das so einfach übertragbar ?
 

JJB

Cogito ergo brumm
Das habe ich auch gemacht.
Ist keine schöne Lösung.
Wie es aussieht komme ich nicht darum meine Console Anwendung zu einer WPF Applikation zu ändern. Damit habe ich das leidige Problem, der Speicherfresser und langlebigen Threads da vieles in einem einzigen GUI Thread gelöst werden muss.

Schade. Danke trotzdem.