Laden...

Desktopanwendung und Konsolenanwendung in einem Projekt?

Erstellt von math55 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.185 Views
math55 Themenstarter:in
314 Beiträge seit 2007
vor 14 Jahren
Desktopanwendung und Konsolenanwendung in einem Projekt?

Hallo, ich habe eine Desktopanwendung mit GUI und allem drum und dran. Der Code sieht so aus:


[STAThread]
static void Main(string[] args)
{
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new TestForm());
}

Jetzt möchte ich im Falle das args.length > 0 ist, eben keine GUI anzeigen, sondern die Übergabeparameter verwenden. Sieht so aus:


if (args.Length > 0)
{
     Console.WriteLine("test");
}
else
{
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new TestForm());
}

Das funktioniert aber nicht, ich bekomme immer den Fehler, dass die Anwendung geschlossen wurde. Kann man das so nicht machen?

Grüße 😃

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo math55,

so wie der Code ist, würde es durchaus funktionieren (und wenn das Projekt als Konsolenanwendung übersetzt ist, würde man die Ausgabe sogar sehen). Ist halt nur die Frage, was du erwartest. Natürlich wird die Anwendung beendet, nachdem alle Anweisungen ausgeführt wurden. Und in den einen Fall ist die Anweisung ja nur Console.WriteLine("test");. Es ist die Frage, was die Anwendung in dem Fall sonst noch tun soll.

herbivore

math55 Themenstarter:in
314 Beiträge seit 2007
vor 14 Jahren

Das "test" wird aber nicht ausgegeben und es kommt eben ein Fehlerfesnter vom OS. Wenn ich die Anwendung als Konsolenanwendung übersetze, dann geht sie ja nicht mehr als Desktopanwendung im Falle args.length = 0, oder?

Grüße

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo math55,

es kommt eben ein Fehlerfesnter vom OS.

welcher genau? Siehe [Hinweis] Wie poste ich richtig? Punkt 5. Du bist doch schon lange genug dabei.

Wenn ich die Anwendung als Konsolenanwendung übersetze, dann geht sie ja nicht mehr als Desktopanwendung im Falle args.length = 0, oder?

Doch, es wird halt nur eine extra Konsole angezeigt, wenn die Anwendung nicht soweiso schon aus der Konsole gestartet wurde.

Siehe auch Unterschied zwischen WinFormsApp und ConsoleApp.

herbivore

795 Beiträge seit 2006
vor 14 Jahren

Hi.

Du kannst die Anwendung auch als GUI-Anwendung compilieren und dann mittels AllocConsole ein Konsolenfenster öffnen, wenn es benötigt wird.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Schamese,

AllocConsole erzeugt jedoch eine neue Console und verwendet nicht die Console, aus der der Prozess möglicherweise gestartet wurde. Dafür müsste man AttachConsole verwenden.

herbivore

151 Beiträge seit 2003
vor 14 Jahren

Hier ein Beispiel mit AttachConsole:

Hybrid App