Tag Archive for console application

Come si automatizza la chiusura di un’applicazione console .NET?

Molte volte nei programmi che sviluppiamo abbiamo l’esigenza di predisporre la loro chiusura in base a certe condizioni: tipicamente richiamiamo il metodo Exit() della proprietà Application nella funzione che gestice il click sulla voce di menu “esci” (nel caso il nostro sia un progetto Windows Forms e la form in questione abbia un menu, ovviamente). Nel caso di un’applicativo di tipo console, tuttavia, questo metodo non è accessibile. Come si può dunque automatizzarne la chiusura?

Questa è la norma da seguire: se operiamo in un contesto visuale, usiamo Application.Exit(); se operiamo invece in ambito console, dobbiamo usare Environment.Exit(0). Facendo questo termineremo l’eseguibile ed invieremo al sistema operativo sottostante il codice di uscita specificato, che normalmente è 0.

Il piccolo trucchetto illustrato in questo breve articolo può essere comodo quando vogliamo supportare in modo intelligente la schedulazione del nostro programma: possiamo far sì che possa richiedere la pressione di un tasto qualunque prima di chiudersi (adatto all’uso diretto) e che possa anche chiudersi automaticamente dopo alcuni secondi di attesa (adatto all’uso batch).

Come ricavare il numero di versione di una Console Application in .NET

Come si può ottenere a runtime il numero di versione completo di un programma di tipo console? Nelle applicazioni Windows Forms useremmo semplicemente la proprietà Application.ProductVersion, ma in questo caso bisogna adottare un altro sistema: quale?

Dobbiamo usare la reflection. Per andare dritti al punto, ecco il codice d’esempio:

Imports System.Reflection;
[...]
Assembly aAssembly = Assembly.GetCallingAssembly()
AssemblyName anName = aAssembly.GetName()
Console.WriteLine(”{0}{1} {2:0}.{3:0}”, anName.Name, anName.Version.Major.ToString(), anName.Version.Minor.ToString())

In sostanza, come potete constatare, il numero di versione è memorizzato nella proprietà Version dell’istanza di AssemblyName associata all’assembly corrente. Buono a sapersi, non è vero?