maggio 2008 Blog Posts
Nicolò commentando il mio ultimo post mi ha chiesto di mostrare: "...un esempio in cui si accede da un thread secondario a quello che gestisce l'interfaccia utente?" niente di più facile! Per la (piccola) demo ho creato un'applicazione WPF, all'interno della Window ho inserito uno StackPanel con un TextBlock (da aggiornare) e due Button, il primo che mosta l'eccezione che viene scatenata se si prova ad accedere alla UI da un thread secondario ed il secondo che mostra come utilizzare la classe System.Windows.Threading.Dispatcher per accedere nella maniera corretta alla UI. Di seguito lo XAML: <Window x:Class="AccessUIThreadDemo.Window1"
...
Chiunque lavori da diverso tempo con il .NET Framework saprà che esistono diverse implementazioni della classeTimer, le quali sono: System.Threading.Timer System.Timers.Timer System.Windows.Forms.Timer Per maggiori informazioni leggete questo articolo di MSDN Magazine: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx. Con l'arrivo di WPF è stata introdotta un'altra classe Timer: System.Windows.Threading.DispatcherTimer. Come ogni Timer che si rispetti la classe non fa altro che eseguire un operazione (metodo) allo scadere di un intervallo di tempo. Quindi la domanda che viene subito in mente è: perchè introdurre un'altra classe Timer?? Seplice, questa implementazione utilizza l'oggetto System.Windows.Threading.Dispatcher...
Anche quest'anno, come quello passato, mi imbarcherò alla volta dell'edizione 2008 del Rally d'Italia Sardegna, tappa Italiana del Campionato Mondiale Rally. Partenza alle 21.00 di stasera e rientro alle 6.00 di Lunedì prossimo! La formula è...Giovedì Shakedown (prove libere) più parco assistenza per "strappare" qualche autografo...Venerdì, Sabato e Domenica accampato per le varie PS (Prove Speciali) in giro per la Gallura con la mia fedele tenda da battaglia alla ricerca di salti mozzafiato e traversi spettacolari!!
Rappresenta la modalità di intercettamento di un motodo e quindi la modalità di intruduzione del codice. I tipi di Advice sono quattro: AroundAdvice: implementa l'interfaccia IMethodInterceptor e permette il massimo controllo su un metodo dato che possiamo aggiungere logica primo e dopo l'invocazione del metodo target. Questo è l'Advice più potente ma anche il più richioso, dato che possiamo dimenticare di chiamare il metodo Proceed() che rappresenta l'invocazione del metodo target. BeforAdvice: implementa l'interfaccia IBeforAdvice e permette di introdurre codice soltanto prima dell'invocazione del metodo target. AfterReturningAdvice: implementa...
Un Pointcut definisce una regola di individuazione di un Joinpoint. Spring.NET offre diverse implementazioni di Pointcut, forniti come moduli indipendendi, implementati come singole entità in modo da renderli riutilizzabili ed intersecabili per diversi Advice. Ogni Pointcut implementa l'interfaccia IPointcut, la quale tramite i due membri ITypeFilter e IMethodMatcher permette di filtrare in base al tipo ed alla firma del metodo. Nella maggior parte dei casi le implementazioni dei Pointcut sono gestite in maniera statica (StaticPointcut), in modo da effettuare il caching del risultato di una valutazione di matching (operazione costosa in termini di performance) la prima volta che...