C # -Anwendung.Run ohne Formular

8

Ist es möglich, Application.Run aufzurufen, aber keinen Formularparameter zu übergeben, oder gibt es eine Alternative, wenn es kein Formular zum Aufruf gibt?

Die Run-Methode scheint keine Überladungen zu enthalten, die kein Formular akzeptieren.

Wenn ich zum Beispiel eine Klasse zuerst instanziieren und dann das Formular aufrufen möchte, gibt es eine Möglichkeit, das Äquivalent zu machen:

%Vor%

Nur um zu verdeutlichen, möchte ich immer noch die Funktionalität, die .Run () bietet. Erstellen Sie also eine Schleife, um die Anwendung in Betrieb zu halten, aber statt ein Formular zu verfolgen, verfolgen Sie eine Klasse oder ein anderes Objekt.

Dies bezieht sich zunächst auf das kompakte Framework. Ich nehme an, deshalb hat die Run-Methode nicht die Überlastung, nach der ich gesucht habe.

    
pm_2 18.01.2011, 08:36
quelle

4 Antworten

6

Ich bin mir nicht sicher, ob du das machen willst:

  1. Sie möchten Ihr Formular an einer anderen Stelle als Main ()
  2. laden
  3. Oder Führen Sie eine Konsole oder eine Dienstanwendung mit no aus.

Für (1) :

%Vor%

Was Sie wissen müssen, ist, dass Ihr Programm von der ersten Zeile der Hauptversion aus beginnt und an der letzten endet. Allerdings wird beim Aufruf von Application.Run(FORM) eine Windows-Meldungsschleife für dieses Formular geladen. Es ist eine spezielle Schleife, die das Programm immer noch in der Hauptsache hält und auf Ereignisse wartet (sie heißen Windows-Meldungen in der Win32-API)

Und so endet das Programm nicht, bis der Benutzer auf die Schaltfläche zum Schließen klickt. In diesem Fall wird das Programm tatsächlich return von seinem Main.

(2) Wenn Sie jetzt nur eine reine Konsolenanwendung ohne Formulare möchten:

%Vor%

Ich hoffe, das hat geholfen.

    
gideon 18.01.2011, 08:59
quelle
14
  

Die Run-Methode scheint keine Überladungen zu enthalten, die kein Formular akzeptieren.

Uh ... Ссылка

  

Application.Run-Methode

     

Beginnt damit, eine Standard-Anwendungsnachrichtenschleife auf dem aktuellen Thread ohne ein Formular auszuführen.

     

public static void Run()

    
ta.speot.is 18.01.2011 08:40
quelle
3

Sie können die Überladung von Application.Run verwenden, die nur einen Anwendungskontext akzeptiert Parameter. Ein ApplicationContext ist im Grunde genommen nur eine Klasse, die Sie erben und beliebige Funktionalität hinzufügen können. Weitere Informationen finden Sie im Beispiel im Link.

    
Klaus Byskov Pedersen 18.01.2011 08:42
quelle
0
%Vor%

Das Problem hier ist jedoch, dass etwas diese Instanz von myClass aufrufen muss, um es zu beenden, sonst läuft das Programm weiter, selbst wenn alle Formulare geschlossen sind. Und das Aufrufen von ExitThread () im Konstruktor wird ignoriert.

    
dynamichael 22.02.2017 01:28
quelle

Tags und Links