Passa ai contenuti principali

Post

Visualizzazione dei post da ottobre, 2008

COM wrapper for a Managed library

In rari casi ci si può trovare a dover esporre un assembly .Net verso un programma scritto in linguaggio unmanaged. Una delle possibili soluzioni è dotare l'assembly di un'interfaccia COM da poter utilizzare nell'applicativo unmanaged. Nel video Make Use of Assemblies Written in Any CLS Language della serie How Do I? videos di Microsoft si affronta un semplice esempio di programma WinForm scritto in C# il cui assembly compilato e registrato come oggetto COM viene poi usato da un programma in Visual C++. I passi fondamentali: Lato C# bisogna importare System.Runtime.InteropService. Impostare gli attributi di classe ComVisible(true) e ClassInterface(ClassInterfaceType. AutoDual ). Una volta compilato l'assembly bisogna far girare l'utility .net regasm per creare la type library. regasm / tlb :PhysServer2. tlb PhysServer2.dll . Poi copiare l'assembly nella stessa directory dell'eseguibile unmanaged che userà la libreria.

ASP.net Ajax

Prendo l'occasione di alcuni "how do I? videos" per dare una chance ad ASP.net Ajax . Get Started with ASP.NET AJAX: Con ASP.net 3.5 e VS2008 non è necessario installare nient'altro. Un UpdatePanel è il contenitore che permette agli elementi contenuti di aggiornarsi senza ricaricare tutta la pagina. L'updatePanel ha una sottosezione ContentTemplate , dove vanno a finire tutti i controlli visuali trascinati nell'UpdatePanel. Un pulsante inserito nell'UpdatePanel provoca, al click, l'aggornamento del solo pannello. Per agganciare l'UpdatePanel ad eventi di controlli esterni al pannello si usa un AsyncPostBackTrigger (specificando nome del controllo ed evento da intercettare). Va inserito nella sottosezione Trigger di UpdatePanel. Get Started with the ASP.NET AJAX Control Toolkit Il kit è un'insieme di controlli visuali ajax-enabled, disponibile come sorgente e come binario precompilato su CodePlex. Il video è abbastanza inutile se si sa già come

Threading with .Net Compact Framework

Nella serie degli "How do I? videos" di Microsoft alcuni video di ripasso sulle basi della programmazione multithread in .Net con un occhio all'aspetto mobile. How Do I: Use the ThreadPool to Execute Worker Threads? ThreadPool. nulla da segnalare. How Do I: Use a Monitor Object for Thread Synchronization? L'oggeto Monitor per creare delle zone critiche ad accesso esclusivo nel codice. Il consiglio è quello di usere le funzioni Enter ed Exit dell'oggetto Monitor in zone vicine del codice e nella stessa funzione. A parer mio tanto vale usare la sintassi lock(syncObj) { ...sezione critica... } How Do I: Synchronize Multiple Threads? Uso di AutoresetEvent e dei suoi metodi Set (consente ad un solo thread di passare il semaforo) e WaitOne (resto in attesa di fronte al semaforo). La sincronizzazione in questione è tra il thread dell'UI che comanda tramite pressione di un pulsate il Set e un secondo thread separato che cicla indefinitamente e ad ogni ciclo si arresta

Custom button control compact framework

Compact framework non permette particolari modifiche dell'aspetto dei pulsanti. Realizzare i pulsanti tramite custom control è una via obbligatoria per dare a qualsiasi applicazione compact framework un design personalizzato. Un semplice tutorial Msdn (2007) dove si spiega come farlo, catturando gli eventi di mouseup e mousedown per ottenre l'effetto premuto e rilasciato dei pulsanti. Un tutorial opennet cf invece propone una soluzione simile usando la proprietà Image della classe BaseButton2 estendendo un CustomButton da Button2. Il controllo Button2 di opennet cf è molto versatile permette di definire immagini di background (di cui effettua uno stretch sull'area del controllo) e un' immagine di primo piano (per esemio l'icona sul pulsante). Il testo multiline ha un suo backColor trasparente, quindi non "nasconde" le immagini sottostanti. Button2 è sicuramente una via obbigatoria se si cerca una soluzione veloce alla personalizzazione dei pulsanti.