<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Visual Basic .Net</title>
        <link>http://blogs.ugidotnet.org/PietroLibroBlog/category/Visual Basic .Net.aspx</link>
        <description>Visual Basic .Net</description>
        <language>it-IT</language>
        <copyright>Pietro Libro</copyright>
        <managingEditor>pietro.libro@libero.it</managingEditor>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Documentazione EF 7 (Beta 5)</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2015/07/22/documentazione-ef-7-beta-5.aspx</link>
            <description>Documentazione "Work in Progress" della prossima release di Entity Framework : http://ef.readthedocs.org/en/latest/&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/102030.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2015/07/22/documentazione-ef-7-beta-5.aspx</guid>
            <pubDate>Wed, 22 Jul 2015 09:07:28 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2015/07/22/documentazione-ef-7-beta-5.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/102030.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/102030.aspx</trackback:ping>
        </item>
        <item>
            <title>Entity Framework 4 :POCO, Complex Type e Stored Procedure</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2011/01/12/entity-framework-4-poco-complex-type-e-stored-procedure.aspx</link>
            <description>Nuovo articolo della serie pubblicato su DomusDotNet, comprensivo di sorgenti in C# e VB.NET. Al solito, critiche e suggerimenti sono sempre ben accetti.&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99620.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2011/01/12/entity-framework-4-poco-complex-type-e-stored-procedure.aspx</guid>
            <pubDate>Wed, 12 Jan 2011 10:59:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2011/01/12/entity-framework-4-poco-complex-type-e-stored-procedure.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99620.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99620.aspx</trackback:ping>
        </item>
        <item>
            <title>Tappa Romana del Microsoft Community Tour 2010</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/15/tappa-romana-del-microsoft-community-tour-2010.aspx</link>
            <description>Qualche foto della tappa Romana del Microsoft Community Tour, DomusDotNet e Visual Basic Tip &amp;amp; Tricks:  In ordine da sinistra verso destra:     Foto di gruppo dopo la sessione “Async CTP: async and iterator methods” for VB tenuta da Lucian Wischik (VB Spec Lead - Microsoft Corporation) . Sessione fantastica, ricca di spunti per il futuro, ma non solo. (nella foto Alessandro del Sole, Diego Cattaruzza, Nicolò Carandini e Lucian Wischik )    Massimo, Speaker di DomusDotNet per la sessione “IE9 &amp;amp; HTML5 for developers”     Una foto della sessione “IE9 &amp;amp; HTML5 for developers”     A cena con Lucian :-)     Giorgio, Speaker di DomusDotNet per la sessione “ASP.NET MVC e il view engine Razor”    Polo Windows Phone con il mio nome :-) (Grazie Lorenzo)                                Purtroppo sono arrivato solo nel primo pomeriggio e di conseguenza non ho foto relative alle sessioni del mattino :-(. &lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99482.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/15/tappa-romana-del-microsoft-community-tour-2010.aspx</guid>
            <pubDate>Mon, 15 Nov 2010 15:07:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/15/tappa-romana-del-microsoft-community-tour-2010.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99482.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99482.aspx</trackback:ping>
        </item>
        <item>
            <title>Introduzione a WCF 4, Hosting dei servizi</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/03/introduzione-a-wcf-4.0-hosting-dei-servizi.aspx</link>
            <description>Pubblicato sul portale di DomusDotNet l'ultima parte degli articoli introduttiva alla tecnologia WCF 4. L'argomento trattato è l'hosting dei servizi. Articolo e sorgenti (in C# e VB.NET) sono  disponibili qui . Al solito, critiche e suggerimenti sono sempre ben accetti.&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99429.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/03/introduzione-a-wcf-4.0-hosting-dei-servizi.aspx</guid>
            <pubDate>Wed, 03 Nov 2010 08:23:26 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/11/03/introduzione-a-wcf-4.0-hosting-dei-servizi.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99429.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99429.aspx</trackback:ping>
        </item>
        <item>
            <title>Introduzione a WCF 4, Error Handling</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/27/introduzione-a-wcf-4.0-error-handling.aspx</link>
            <description>Pubblicato sul portale di DomusDotNet la terza parte della serie  introduttiva su WCF 4. L'argomento trattato è la gestione degli errori. Articolo e sorgenti (in C# e VB.NET) sono  disponibili qui . Critiche e suggerimenti sono sempre ben accetti.&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99404.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/27/introduzione-a-wcf-4.0-error-handling.aspx</guid>
            <pubDate>Wed, 27 Oct 2010 10:14:37 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/27/introduzione-a-wcf-4.0-error-handling.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99404.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99404.aspx</trackback:ping>
        </item>
        <item>
            <title>Introduzione a WCF 4, Seconda parte</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/20/introduzione-a-wcf-4-seconda-parte.aspx</link>
            <description>Pubblicato sul portale di DomusDotNet la seconda parte della mini serie introduttiva su WCF 4. Articolo e sorgenti (in C# e VB.NET) sono disponibili qui. Al solito, critiche e suggerimenti sono sempre ben accetti.&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99371.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/20/introduzione-a-wcf-4-seconda-parte.aspx</guid>
            <pubDate>Wed, 20 Oct 2010 09:56:27 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/20/introduzione-a-wcf-4-seconda-parte.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99371.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99371.aspx</trackback:ping>
        </item>
        <item>
            <title>Introduzione a WCF 4</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/13/introduzione-a-wcf-4.aspx</link>
            <description>E' uscito il primo di una mini-serie di articoli riguardanti la nuova versione di WCF. Per chi fosse interessato potete trovare l'articolo su DomuDotNet: Introduzione a WCF 4 . Lo scopo della serie è partire dalle basi e affrontare successivamente tematiche più avanzate. Al solito, critiche e suggerimenti sono sempre ben accetti.  La prossima settimana la seconda puntata.&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/99345.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/13/introduzione-a-wcf-4.aspx</guid>
            <pubDate>Wed, 13 Oct 2010 11:32:29 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2010/10/13/introduzione-a-wcf-4.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/99345.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/99345.aspx</trackback:ping>
        </item>
        <item>
            <title>RegexStringValidator</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/09/17/94060.aspx</link>
            <description>Con la versione 2.0 del .Net Framework è stata aggiunta al namespace System.Configuration, la classe RegexStringValidator che permette di eseguire rapidatamente la validazione di stringhe utilizzando espressioni regolari. Supponendo di avere un'espressione del tipo ^\d+,\d{2}$, che permette di verificare se una stringa rappresenta un valore numerico con due cifre dopo la virgola, per validare una stringa, possiamo scrivere una funzione molto semplice:     1     Private Function IsValid(ByVal value As String) As Boolean
 2 
 3         Dim regexValidator As New RegexStringValidator("^\d+,\d{2}$")
 4 
 5         Try
 6             regexValidator.Validate(value)
 7             Return True
 8         Catch ex As ArgumentException
 9             'E'possibile sfruttuare l'istanza di ArgumentException per 
10             'ottenere maggiori informazioni sull'eccezione
11             Return False
12         End Try
13 
14     End Function



Utilizzando il metodo classico, avremmo potuto scrivere:

1 Dim regex As New System.Text.RegularExpressions.Regex("^\d+,\d{2}$")
2 Dim match As System.Text.RegularExpressions.Match = regex.Match("")
3 MessageBox.Show(match.Success)

Un'osservazione: Per verificare che un oggetto possa essere validato utilizzando RegexStringValidator, è sufficiente utilizzare il metodo d'istanza CanValidate della classe.

Technorati Tag: RegexStringValidator&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/94060.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/09/17/94060.aspx</guid>
            <pubDate>Wed, 17 Sep 2008 11:00:58 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/09/17/94060.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/94060.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/94060.aspx</trackback:ping>
        </item>
        <item>
            <title>DataTable.RowChanged e ProgressBar</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/13/91175.aspx</link>
            <description>Se abbiamo bisogno di una soluzione veloce per visualizzare l'avanzamento di un controllo ProgressBar durante il caricamento di un DataTable, possiamo gestire l'evento RowChanded in questo modo:     1     Private Sub CustomRowChanged(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
2 
3         If (e.Action = DataRowAction.Commit) Then
4             'Avanziamo il valore della progress bar
5             ProgressBar1.Value += 1
6             Application.DoEvents()
7         End If
8 
9     End Sub


Il codice per popolare il DataTable con i dati e per registrare il gestore eventi personalizzato può essere del tipo:


   1         'Imposto la proprietà Maximux del controllo ProgressBar
 2         ProgressBar1.Value = 0
 3         ProgressBar1.Maximum = GetNumeroRecords()
 4 
 5         'Registro il gestore eventi personalizzato
 6         AddHandler Articoli.ArticoliDataTable.RowChanged, AddressOf CustomRowChanged
 7 
 8         Try
 9             DataGridView1.SuspendLayout()
10 
11             'Popolo il DataTable 
12             ArticoliTableAdapter.Fill(Articoli.ArticoliDataTable)
13 
14             MessageBox.Show(String.Format("Caricati {0} records",Articoli.ArticoliDataTable.Rows.Count))
15 
16         Catch ex As Exception
17             MessageBox.Show(ex.Message)
18         Finally
19             DataGridView1.ResumeLayout()
20             'Rimuovo l'handler...
21             RemoveHandler Articoli.ArticoliDataTable.RowChanged, AddressOf CustomRowChanged
22         End Try


Ovviamente si potrebbero usare modelli di programmazione asincrona o popolare dati mediante un thread diverso da quello principale.

Technorati Tag: DataTable.RowChanged Event&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/91175.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/13/91175.aspx</guid>
            <pubDate>Wed, 13 Feb 2008 18:00:29 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/13/91175.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/91175.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/91175.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Form, thread ed eccezioni</title>
            <link>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/03/90987.aspx</link>
            <description>Supponiamo di avere una semplice applicazione Windows Form il cui unico (e stupido) compito è quello di eseguire una divisione, qualcosa  del tipo

Se non eseguiamo nessuna validazione sui campi, potrebbe accadere che vengano eseguiti calcoli sbagliati (ad esempio una divisione per zero)  e di conseguenza che vengano sollevate le corrispondenti eccezioni. Per catturarle, possiamo utilizzare dei blocchi Try...Catch...Finally oppure  gestire l'evento Application.ThreadException. Così facendo, oltre alla possibilità di memorizzare un log delle eccezioni a livello di applicazione o eseguire del codice di pulizia, possiamo visualizzare una Windows Form User-Friendly, senza interrompere bruscamente l'applicazione. Per registrare il gestore  dell'evento ThreadException, possiamo aggiungere un modulo al nostro progetto e scrivere il seguente codice:

 1 &amp;lt;STAThread()&amp;gt; _ 2     Public Sub Main() 3  4         'Imposta il gestore evento Application.ThreadExeception personalizzato 5         AddHandler Application.ThreadException, AddressOf CustomErrorHandler 6  7         AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf AppDomainCustomErrorHandler 8  9         'Imposta il gestore evento Application.ApplicationExit personalizzato10         AddHandler Application.ApplicationExit, AddressOf CustomApplicationExit11 12         Application.Run(New Form1())13     End Sub

Dove il gestore CustomErrorHandler è del tipo:
 

 1  Public Sub CustomErrorHandler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs) 2  3         Try 4             'Gestisce l'eccezione visualizzando una finestra di dialogo comune per l'eventuali eccezioni 5             My.Forms.frmExeception.DescrizioneEccezione = e.Exception.Message 6             My.Forms.frmExeception.ShowDialog() 7         Catch ex As Exception 8  9         End Try10 11     End Sub

 
Il quale, in caso di eccezione, visualizza la seguente finestra di dialogo:
 
Nel Sub Main, oltre a registrare l'evento Application.ThreadException, viene registrato anche il gestore per l'evento AppDomain.CurrentDomain.UnhandledExecption, perchè nel in cui caso la nostra applicazione sfrutti il multithreading, l'eventuali eccezioni dovute ai thread secondari non sarebbero catturate da CustomErrorHandler. Il codice del gestore per l'evento AppDomain.CurrrentDomain.UnhandledException è il seguente:

 1 Public Sub AppDomainCustomErrorHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) 2         Try 3             'Gestisce l'eccezione visualizzando una finestra di dialogo comune per l'eventuali eccezioni 4             'Ottiene l'oggetto Exception 5             Dim appDomainException As Exception = DirectCast(e.ExceptionObject, System.Exception)             6             My.Forms.frmExeception.DescrizioneEccezione = appDomainException.Message 7             My.Forms.frmExeception.ShowDialog() 8  9             If (e.IsTerminating) Then10                 'Operazioni di pulizia...11             End If12         Catch ex As Exception13 14         End Try15     End Sub

Il quale esegue una cast dell'oggetto e.ExceptionObject in System.Exception e visualizza la finestra di dialogo su mostrata. L'istanza di oggetto UnhandledExecptionEventArgs espone la proprietà IsTerminating che indica se il common language runtime stà terminando o meno. Nel caso di UnhandledExecption, il .Net Framework , con o senza gestione del relativo evento, visualizza la classica finestra di dialogo per l'esecuzione del debug  dell'applicazione. Per testare il codice ed il relativo comportamento dell'applicazione, da Visual Studio è necessario lanciare l'applicazione  senza Debug.
Thread Exception.zip

Technorati Tag: Application.ThreadException,UnhandledException&lt;img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/90987.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pietro Libro</dc:creator>
            <guid>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/03/90987.aspx</guid>
            <pubDate>Sun, 03 Feb 2008 13:26:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/PietroLibroBlog/archive/2008/02/03/90987.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/90987.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/90987.aspx</trackback:ping>
        </item>
    </channel>
</rss>