Apr
22
101 esempi di LINQ
Filed Under .NET Framework, C#, LINQ | Leave a Comment
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.
Jan
26
Tipi nullable
Filed Under .NET Framework, Articoli, C# | 2 Comments
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.
Jan
26
Monitorare lo stato delle connessioni
Filed Under .NET Framework, Articoli, C#, Networking | Leave a Comment
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().
Jan
23
ApplicationContext e MainForm
Filed Under .NET Framework, Articoli, C#, Windows Forms | 4 Comments
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());
Jan
21
Worker Thread
Filed Under .NET Framework, Articoli, C# | 3 Comments
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.
Jan
21
Inserire Dll in cartella diversa da quella del .exe
Filed Under .NET Framework, C# | Leave a Comment
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:
Jan
20
Applicazione con singola istanza
Filed Under .NET Framework, Articoli, C# | Leave a Comment
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:
Jan
19
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.

Feed degli articoli
Feed dei commenti
Forum














