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 😃
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
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
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
Hi.
Du kannst die Anwendung auch als GUI-Anwendung compilieren und dann mittels AllocConsole
ein Konsolenfenster öffnen, wenn es benötigt wird.
Gruß, Christian.
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