Je souhaite que l'une de mes applications Windows Forms soit exécutée par programme, à partir de la ligne de commande. En préparation, j'ai séparé la logique de sa propre classe de la forme. Maintenant, je suis bloqué en essayant de faire basculer l'application en fonction de la présence d'arguments de ligne de commande.Application .NET s'exécutant en tant que Windows Form ou en tant qu'application de console
Voici le code pour la classe principale:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
if (args.Length > 1) // gets passed its path, by default
{
CommandLineWork(args);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static void CommandLineWork(string[] args)
{
Console.WriteLine("It works!");
Console.ReadLine();
}
où Form1
est ma forme et la chaîne It works!
est juste un espace réservé pour la logique réelle.
À l'heure actuelle, lors de l'exécution à partir de Visual Studio (avec des arguments de ligne de commande), la phrase It works!
est imprimée sur la sortie. Cependant, lors de l'exécution du fichier /bin/Debug/Program.exe (ou/Release d'ailleurs), l'application se bloque.
Est-ce que je vais dans ce sens? Serait-il plus logique (c'est-à-dire de prendre moins de temps de développement) que ma classe logique soit une DLL chargée par deux applications distinctes? Ou y a-t-il quelque chose de complètement différent que je ne connais pas?
Merci d'avance!
Quelle exception obtenez-vous lorsque l'application tombe en panne? Aussi, je suppose qu'il devrait être args.Length> = 1 (ou> 0) au lieu de> 1? –