Un aspetto abbastanza scomodo della CheckBoxList ASP.NET è la mancanza di un metodo o una proprietà che restituisca la lista degli item correntemente selezionati. Non è difficile scrivere un metodo statico in una classe di utilità che faccia esattamente questo lavoro. Tuttavia preferiamo utilizzare un extension method per avere "a portata di mano" il nostro codice e per un util ...
C#
Pulire un pannello di ricerca
Sfruttando gli extension methods (già incontrati nel nostro blog) vediamo come pulire un pannello di ricerca di una pagina ASP.NET Web Forms. Questa è una situazione che può capitare numerose volte e rappresenta una lavoro noioso e ripetitivo e quindi particolarmente soggetto ad errori. Supponiamo di aver racchiuso tutti i nostri controlli all'interno di un pannello <a ...
ThreadPool e risorse condivise
Oggi dimostriamo un semplice utilizzo del ThreadPool di .NET osservando in maniera molto semplice che i Thread vengono riutilizzati. Per accodare una richiesta al ThreadPool utilizzeremo la classe Task, con un semplice contatore terremo traccia dei Task creati e stamperemo a video l'Id del Thread che lo esegue. var tasks = new Task[100]; for (int i = 0; i < 100; i++ ...
Semplice Export CSV con Generics e Reflection
Ci è capitato diverse volte di dover esportare dei dati in da tabelle o viste di Sql Server o magari da griglie di pagine web di nostre applicazioni il cui datasource è creato "ad hoc" per la pagina. Presentiamo qui una semplice implementazione di un export in csv che fa uso dei Generics e della reflection. public static void FromEnumerable<T>(IEnumerable<T> ...
Callback C#
Una funzionalità interessante e forse poco utilizzata nello sviluppo di applicazioni web .NET sono le Action (o callback). Per chi ha sviluppato applicazioni desktop o javascript conosce la loro utilità, soprattutto quando si ha la necessità di gestire degli eventi. In un sito web C# diventano molto utili nel momento in cui pagine o controlli diversi interagiscono tra loro: Ma ...
Come estendere classi pre-esistenti
In alcune situazioni vorremmo poter estendere classi esistenti nel framework o il altre dll oppure potrebbe essere necessario estendere ad esempio le classi autogenerate ad esempio da Linq to Sql. Per farlo abbiamo a disposizione due diverse strade (oltre all'ereditarietà). Se una classe è dichiarata con la keywork "partial" è possibile estenderla aggiungendo metodi e propri ...
Thread Safety in practice
Vediamo innanzitutto come instanziare ed avviare due thread. Nel nostro esempio, i due thread simulano del lavoro intensivo da eseguire in background e ritornano. static bool done = false; ... Thread a = new Thread(task); a.Start(); Thread b = new Thread(task); b.Start(); ..... static void task() { if (!done) { ...
Windows Phone Tombstoning
Facendo seguito all'articolo sulla navigazione, oggi spiegheremo come preservare lo stato di una pagina. Dopo la disattivazione di una App (l'utente preme il tasto super) può capitare che Windows Phone, per liberare memoria, metta l'applicazione nello stato chiamato "Tombstoned". In questo stato la nostra app non viene preservata, quindi il resume andrà fatto manualmente.La pa ...
Trovare i K numeri piu grandi tra N
Oggi vediamo come affrontare in maniera efficiente la ricerca dei K numeri più grandi tra N elementi. Per semplicità affronteremo il caso di K=100 e N=1000000 quindi il nostro problema è trovare i 100 numeri più grandi tra 1000000 dati. Per farlo faremo uso di un binary heap (info su wikipedia). Un binary heap è un albero in cui i nodi rispettano sempre la relazione p ...
Parallel Linq, un semplice esempio
Oggi vi proponiamo una semplice console application che vi permetterà di testare rapidamente la libreria Parallel Linq (documentazione). Ovviamente scalfiremo solo la superficie delle potenzialità di Parallel Linq e sicuramente per utilizzarlo in un ambiente di produzione saranno necessarie attente riflessioni sull'effettiva utilità dipendente molto dalla potenza di calcolo del ...