LINQ, particolarmente LINQ to Objects, segna la svolta funzionale di C# 3.0 e del framework .NET 3.5. L’utilizzo di LINQ non è obbligatorio per il programmatore .NET, ma il guadagno in termini di espressività la rendono decisamente una scelta raccomandata.

Per coloro che non lo hanno ancora visto, Microsoft ha da tempo pubblicato 101 esempi pratici per l’utilizzo di LINQ. Il sito è quello internazionale, per cui in inglese, ma gli esempi sono sostanzialmente snippet di codice, per cui del tutto comprensibili anche per i lettori meno angolofoni.

I tipi nullable sono stati introdotti nella versione 2.0 di .Net.
Questi tipi valori sono istanze della struttura Syste.Nullable<>, e rappresentano un tipo con tutti i valori di quello base, più un valore aggiuntivo null. Mi spiego meglio: prendiamo in considerazione, come esempio, il tipo bool:

System.Nullable<bool> var;

La variabile var, al contrario di una normale variabile bool che può assumere due valori (true o false), può assumere tre valori: true, false o null.

Read more

In alcuni casi potrebbe essere utile ottenere informazioni generiche, ma anche dettagliate, riguardo i vari stati di tutte le connessioni presenti sul nostro sistema in riferimento a più protocolli di rete.

Esistono diversi modi per raggiungere questo scopo ed uno dei più rapidi ci viene offerto dalla versione 2.0 del .NET Framework con la classe IPGlobalProperties (namespace System.Net.NetworkInformation), in particolare sfruttando il metodo statico GetIPGlobalProperties().

Read more

Nei progetti VC# il thread principale del programma è legato alla Form principale per questo quando si chiude, la MainForm termina anche l’esecuzione del programma.

Questo comportamento è dovuto da questa riga di codice contenuta nel metodo Main:

Application.Run(new Form1());

Read more

Anche se in rete è possibile trovare diverse definizioni di oggetti che incapsulano il tipo nativo Thread di .NET, queste risultano spesso incomplete. Ecco perché ho deciso di svilupparne una custom per soddisfare le mie esigenze applicative.

Read more

In Visual Studio per impostazione predefinita le DLL, o qualsiasi assembly, vengono create nella stessa cartella del .exe. Avvolte questo non è molto utile perché magari ci sono molte DLL e vogliamo “gestirle” meglio, mettendole in cartelle diverse da quella dell’eseguibile. Questo non è un problema quando la cartella che contiene l’assembly si chiama nello stesso modo dell’assembly da caricare. Per esempio abbiamo una dll di nome Dll contenuta in una cartella di nome Dll:

App\Dll\Dll.dll

App\App.exe

In questo caso non viene sollevata nessuna eccezione, perché il Common Language Runtime trova l’assembly. Quando la cartella non porta lo stesso nome dell’assembly, si deve creare un file di configurazione per indicare a CLR dove cercare. Ecco un esempio di file config:

Read more

Spesso può essere utile sviluppare applicazioni funzionanti su singola istanza. Questa è una funzionalità richiesta soprattutto dai programmatori VB che per ragioni di lavoro sono passati a C#. Infatti in VB.NET basta spuntare l’opzione “Make single istance application” nelle opzioni del progetto. Nei progetti in C# questa opzione non esiste, ma ciò non vuol dire che non si possa implementare via codice.In prima analisi si potrebbe pensare di eseguire, all’interno del Main, un controllo sui processi in esecuzione. La cosa sarebbe fattibilissima, basta utilizzare il metodo GetProcessByName della classe Process per ottenere i processi che portano il nome della nostra applicazione. I metodi GetProcess (GetProcessByName, GetProcessById) però, usano i performance counters. Pertanto non sono da usare così alla leggera perché possono avere un paio di problemi:

  • I Performance Counter possono essere disabilitati e la classe Process, senza di questi, non funziona;
  • I Performance Counter sono disponibili solo agli utenti admin della macchina.

Un’alternativa è quella di usare i Mutex. I Mutex sono una primitiva di sincronizzazione e sono molto facili da usare. Ecco quindi come diventa la classe program:

Read more

Anche se la notizia non è proprio fresca (risale a qualche giorno fa), merita davvero di essere segnalata.

Come promesso circa un mesetto fa, Microsoft ha reso disponibili i sorgenti del .Net Framework sotto licenza Microsoft Reference License (MS-RL). Questi sorgenti saranno visibili durante la fase di Debug dell’applicazione mentre si fa Debug Step-by-Step. Per tutti i dettagli su come configurare Visua Studio 2008 (purtroppo la versione Express non è supportata) vi rimando al blog di Shawn Burke.

Per ora i sorgenti disponibili sono quelli degli assembly:

  • Mscorlib.DLL
  • .NET Base Class Libraries
  • ADO.NET
  • ASP.NET
  • XML
  • System.Security
  • Windows Forms
  • WPF (Windows Presentation Foundation)
  • Microsoft.VisualBasic.DLL

In futuro saranno disponibili anche quelli di LINQ e WCF.

← Previous Page