<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>Eccentrica sparagli dopo</title>
        <link>http://community.dotnetwork.it/sabrina/Default.aspx</link>
        <description>L'altro universo</description>
        <language>it-IT</language>
        <copyright>Sabrina C.</copyright>
        <managingEditor>ziayeye@ziayeye.it</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <image>
            <title>Eccentrica sparagli dopo</title>
            <url>http://community.dotnetwork.it/images/RSS2Image.gif</url>
            <link>http://community.dotnetwork.it/sabrina/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Too Much Information =&amp;gt; No information | Disinformation</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/11/28/too-much-information-gt-no-information--disinformation.aspx</link>
            <description>&lt;p&gt;Troppe informazioni = nessuna informazione, oppure disinformazione o anche misinformazione. Scrivo questo blog dopo aver guardato il simpatico video pubblicato da &lt;a href="http://community.dotnetwork.it/AndreaZ/archive/2011/11/25/silverlight-o-html5.aspx" target="_blank"&gt;Andrea Zingoni&lt;/a&gt; e dopo aver partecipato a WPC ed all’ MVP  Community Summit, la scorsa settimana, ci tengo a mettere i miei 2centesimi riguardo la troppa o troppo scarsa quantità di informazioni contraddittorie che arrivano relativamente a Silverlight, HTML5 e Javascript ecc.    &lt;br /&gt;Quanto dico è esclusivamente l’opinione che mi sono fatta ascoltando quanto è stato detto alla BUILD ufficialmente da Microsoft e quanto è stato riportato dai vari MVP nei loro interventi relativi a Windows 8, Windows RT, Metro, ovvero le tecnologie che stanno arrivando nel nostro futuro.&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333" size="3"&gt;&lt;strong&gt;Windows 8 ucciderà il Desktop?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Assolutamente no, chi si è scaricato la developer preview ed ha guardato la sola interfaccia metro si è perso più della metà di quello che c’è dentro a Windows 8, i desktop implementeranno sia l’interfaccia desktop vedi Windows 7 che quella Metro, anche perché l’interfaccia Metro è un interfaccia studiata per i Touch, per quanto molto bella difficilmente permetterà di fare data entry simile a quello che facciamo in un ERP. Certo, apre nuove porte per quello che è la raccolta dati onsite, l’implementazione di interfacce semplici ed usabili anche in un officina, (per quanto qualcuno dovrà predisporre delle device a prova di guanti da meccanico e olio motore) ed apre nuove porte per poter fornire dati a chi non è in azienda, quindi un rich report all’amministratore delegato relativo all’ultima settimana da parte del commerciale piuttosto che l’analisi di un consulente sui concorrenti e chi più ne ha più ne metta. Ma il desktop rimane dov’è, e se qualcuno si è dato la briga di spulciare le cartelle di sistema della developer preview potrà osservare che il famigerato runtime di VB6 è ancora li, anche se non è detto vi rimarrà in seguito.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#333333" size="3"&gt;Metro è l’interfaccia di Microsoft per i tablet ARM?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Certo che si, e su questo tipo di device che non è x86 probabilmente ci sarà solo Metro. Microsoft al riguardo non ha detto nulla di ufficiale, la sola motivazione logica per cui posso supporlo è che non essendo devices x86 far funzionare il kernel di windows sarebbe piuttosto complicato ma siccome “mai dire mai” è la parola d’ordine, lo scopriremo il prossimo anno.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#333333" size="3"&gt;Cosa succede a Silverlight e alla programmazione XAML + .NET?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Assolutamente nulla, perché il sistema di sviluppo dedicato a Metro e WinRT permette di sviluppare in C# + XAML, oppure in HTML5 + Javascript (&lt;font color="#ff0000"&gt;&lt;u&gt;&lt;strong&gt;sottolineo l’oppure&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;), oppure in C++ nativo. E se vi chiedete perché Microsoft abbia deciso di supportare HTML5 e Javascript rispondo: è logico, se vogliono che chi sviluppa con queste due tecnologie possa passare le proprie APP anche su Metro senza dover imparare nuove tecnologie o reingegnerizzare tutto. Pertanto avremo la possibilità di usare un numero maggiore di tecnologie ma non butteremo alle ortiche tutto quello che ci siamo studiati fino a qui.&lt;/p&gt;  &lt;p&gt;Anche perché se il Desktop rimarrà dove si trova ancora molto a lungo, tutto quello che è il .NET framework e quello che si farà per i desktop resta dov’è, collegato a tastiera e mouse come sempre.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;E allora?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;L’invito è a tenere d’occhio ciò che succederà, scaricare le CTP, provare ciò che c’è di nuovo, essere pronti ad agire, pensare a come usare il nuovo hardware nelle nostre applicazioni. Guardare a quello che sta arrivando come ad una nuova opportunità per il business, invece che ad un nuovo ostacolo da superare per mantenere le nostre conoscenze al passo con lo sviluppo.&lt;/p&gt;  &lt;p&gt;Sono quella del bicchiere mezzo pieno? Si, oppure non avrei iniziato la mia prima applicazione .NET con la Beta2 di Visual Studio 2005, la Beta2 di SQL Server 2005 e la Beta2 dei controlli Infragistics, consegnandola al cliente in produzione una settimana dopo che era uscita la RTM.&lt;/p&gt;  &lt;p&gt;A voi la parola.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/924.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/11/28/too-much-information-gt-no-information--disinformation.aspx</guid>
            <pubDate>Mon, 28 Nov 2011 17:01:07 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/924.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/11/28/too-much-information-gt-no-information--disinformation.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/924.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The maximum message size quota for incoming messages (65535) has been exceeded</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/10/14/the-maximum-message-size-quota-for-incoming-messages-65535-has.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/7e4b77af7742_1308C/exception_quota_2.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="exception_quota" border="0" alt="exception_quota" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/7e4b77af7742_1308C/exception_quota_thumb.png" width="456" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una eccezione sollevata da un servizio web WCF pubblicato su IIS se cercate di scaricare via SOAP un oggetto (ad esempio una immagine) che in Base64 è più lunga di 2&lt;sup&gt;16&lt;/sup&gt;-1 byte.&lt;/p&gt;  &lt;p&gt;Per ovviare al problema dovete intervenire sull’applicazione client non sul server dove gira il servizio web, nel mio caso si tratta di una applicazione Winforms (per il test) i parametri devono essere inseriti nell’app.config, se fosse una applicazione web dovrei modificare il web.config.&lt;/p&gt;  &lt;pre class="HtmlFormat"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;startup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;supportedRuntime&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="v4.0"&lt;/span&gt; &lt;span class="attr"&gt;sku&lt;/span&gt;&lt;span class="kwrd"&gt;=".NETFramework,Version=v4.0,Profile=Client"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;startup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;basicHttpBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BasicHttpBinding_ISoapWS"&lt;/span&gt; &lt;span class="attr"&gt;closeTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;="00:01:00"&lt;/span&gt;
          &lt;span class="attr"&gt;openTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;="00:01:00"&lt;/span&gt; &lt;span class="attr"&gt;receiveTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;="00:10:00"&lt;/span&gt; &lt;span class="attr"&gt;sendTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;="00:01:00"&lt;/span&gt;
          &lt;span class="attr"&gt;allowCookies&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;bypassProxyOnLocal&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;hostNameComparisonMode&lt;/span&gt;&lt;span class="kwrd"&gt;="StrongWildcard"&lt;/span&gt;
          &lt;span class="attr"&gt;maxBufferSize&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt; &lt;span class="attr"&gt;maxBufferPoolSize&lt;/span&gt;&lt;span class="kwrd"&gt;="500000"&lt;/span&gt; &lt;span class="attr"&gt;maxReceivedMessageSize&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt;
          &lt;span class="attr"&gt;messageEncoding&lt;/span&gt;&lt;span class="kwrd"&gt;="Text"&lt;/span&gt; &lt;span class="attr"&gt;textEncoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; &lt;span class="attr"&gt;transferMode&lt;/span&gt;&lt;span class="kwrd"&gt;="Buffered"&lt;/span&gt;
          &lt;span class="attr"&gt;useDefaultWebProxy&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;readerQuotas&lt;/span&gt; &lt;span class="attr"&gt;maxDepth&lt;/span&gt;&lt;span class="kwrd"&gt;="64"&lt;/span&gt; &lt;span class="attr"&gt;maxStringContentLength&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt; &lt;span class="attr"&gt;maxArrayLength&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt;
            &lt;span class="attr"&gt;maxBytesPerRead&lt;/span&gt;&lt;span class="kwrd"&gt;="4096"&lt;/span&gt; &lt;span class="attr"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span class="kwrd"&gt;="16384"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;transport&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt; &lt;span class="attr"&gt;proxyCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt;
              &lt;span class="attr"&gt;realm&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;message&lt;/span&gt; &lt;span class="attr"&gt;clientCredentialType&lt;/span&gt;&lt;span class="kwrd"&gt;="UserName"&lt;/span&gt; &lt;span class="attr"&gt;algorithmSuite&lt;/span&gt;&lt;span class="kwrd"&gt;="Default"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;security&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;basicHttpBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;bindings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;client&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;="http://localhost/MyWebservice/ServiceClass.svc"&lt;/span&gt;
        &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;="basicHttpBinding"&lt;/span&gt; &lt;span class="attr"&gt;bindingConfiguration&lt;/span&gt;&lt;span class="kwrd"&gt;="BasicHttpBinding_ISoapWS"&lt;/span&gt;
        &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;="SoapWsTest.ISoapWS"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="BasicHttpBinding_ISoapWS"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;client&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;span class="attr"&gt;&lt;font color="#333333"&gt;Dovete modificare i seguenti parametri&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;span class="attr"&gt;maxBufferSize&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt;&lt;/li&gt;

  &lt;li&gt;&lt;span class="attr"&gt;maxBufferPoolSize&lt;/span&gt;&lt;span class="kwrd"&gt;="500000"&lt;/span&gt;&lt;/li&gt;

  &lt;li&gt;&lt;span class="attr"&gt;maxReceivedMessageSize&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt; &lt;/li&gt;

  &lt;li&gt;&lt;span class="attr"&gt;maxStringContentLength&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt;&lt;/li&gt;

  &lt;li&gt;&lt;span class="attr"&gt;maxArrayLength&lt;/span&gt;&lt;span class="kwrd"&gt;="65535"&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ad un valore che ritenete sufficiente per le vostre esigenze. Attenzione che se non li modificate tutti, riceverete una ulteriore eccezione per ognuno dei parametri che non sono abbastanza grandi. E’ ovvio che i parametri sono arbitrari, se dovete scaricare immagini o documenti PDF o files molto grandi andate sui milioni senza paura e ricordate che Bas64 è uno dei più dispendiosi fra i formati di trasmissione dati.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/901.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/10/14/the-maximum-message-size-quota-for-incoming-messages-65535-has.aspx</guid>
            <pubDate>Fri, 14 Oct 2011 20:06:03 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/901.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/10/14/the-maximum-message-size-quota-for-incoming-messages-65535-has.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/901.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Conversioni che passione</title>
            <category>Helper e Generics</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/10/14/conversioni-che-passione.aspx</link>
            <description>&lt;p&gt;Ieri ho bloggato una nota per alcune conversioni poco frequenti che ho dovuto fare a causa di una routine di checksum che ho scritto per  &lt;a href="http://community.dotnetwork.it/alberto/default.aspx" target="_blank"&gt;Alberto&lt;/a&gt;. Oggi ho scoperto che la mia ottimistica versione era largamente superata dal meccanismo reale del calcolo del checksum, per riuscire a riprodurre il quale ho dovuto effettuare una serie di stranezze che vi listo di seguito nel caso abbiate la “fortuna” (poca) di scontrarvi con qualcosa di simile.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080c0" size="3"&gt;&lt;strong&gt;Leggere un sub-array da un byte array&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] sourceArray;
... &lt;span class="rem"&gt;//Qui mettete i bytes nell’array leggendo un file o una seriale&lt;/span&gt;
&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] destArray = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[desiredSublength]
Array.Copy(sourceArray, StartIndex, destArray, DestStartIndex, Length);&lt;/pre&gt;

&lt;p&gt;&lt;font color="#0080c0" size="3"&gt;&lt;strong&gt;Conversione dei bytes nei corrispondenti caratteri ascii &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;char&lt;/span&gt;[] chars = System.Text.Encoding.UTF8.GetChars(destArray);&lt;/pre&gt;

&lt;p&gt;&lt;font color="#0080c0" size="3"&gt;&lt;strong&gt;Far diventare una porzione dell’array di caratteri una string &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; subValue = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;(charsArray, startIndex, length);&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#0080c0" size="3"&gt;Convertire la stringa rappresentante un numero esadecimale in un byte&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt; myHexByte = Convert.ToByte(&lt;span class="str"&gt;"1C"&lt;/span&gt;, 16);&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#0080c0" size="3"&gt;Convertire un byte in una stringa rappresentante il numero in esadecimale&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; hexString = Convert.ToString(myByteValue, 16);&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#0080c0" size="3"&gt;Fate attenzione che la stringa sia correttamente upper o lower case&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; lowerHex = hexString.ToLower();
&lt;span class="kwrd"&gt;string&lt;/span&gt; upperHex = hexString.ToUpper();&lt;/pre&gt;

&lt;p&gt;Questo perché &lt;font color="#ff0000"&gt;&lt;strong&gt;db&lt;/strong&gt;&lt;/font&gt; e &lt;strong&gt;&lt;font color="#ff0000"&gt;DB&lt;/font&gt;&lt;/strong&gt; sono lo stesso numero ma cambiano completamente se &lt;strong&gt;&lt;font color="#0080c0" size="3"&gt;convertite la stringa in un char array&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;char&lt;/span&gt;[] hexLetters = upperHex.ToCharArray();&lt;/pre&gt;

&lt;p&gt;e poi  &lt;strong&gt;&lt;font color="#0080c0" size="3"&gt;convertite il char array in un byte array&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytesFromHexLetters = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[hexLetters.Length];
&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; hexLetters.Length; i++)
{
   bytesFromHexLetters [i] = Convert.ToByte(chars[i]);
}&lt;/pre&gt;

&lt;p&gt;Provate con le lettere esadecimali in upper e lower case e ve ne accorgete, e se mi chiedete, ma tutto in una routine di calcolo del checksum? &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Con la lingua fuori" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/I-Forget-the-opposite-convert-a-string-t_123E5/wlEmoticon-smilewithtongueout_2.png" /&gt;  qui lo chiamiamo Ufficio Complicazione Affari Semplici, sembra essere spesso molto affollato.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/900.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/10/14/conversioni-che-passione.aspx</guid>
            <pubDate>Fri, 14 Oct 2011 19:35:04 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/900.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/10/14/conversioni-che-passione.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/900.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Convertire byte[] in int16[] e convertire un numero in stringa binaria</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/10/12/convertire-byte-in-int16-e-convertire-un-numero-in-stringa.aspx</link>
            <description>&lt;p&gt;Due operazioni certamente non quotidiane per chi come me si occupa solitamente di database e user interface, ma oggi, Alberto mi ha chiesto un piccolo aiuto con un array di byte e uno strano checksum e per poter fare le verifiche ho dovuto usare entrambe le cose in oggetto. Mi segno come si fa per ritrovarlo alla prossima:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0077b0" size="3"&gt;Convertire un byte[] in uno short[] (o int16[]) ma sarebbe lo stesso con int32 o int64:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;short&lt;/span&gt;[] GetShortArray(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] pBaits)
{
    &lt;span class="kwrd"&gt;int&lt;/span&gt; length = pBaits.Length / 2 + pBaits.Length % 2;
    &lt;span class="kwrd"&gt;short&lt;/span&gt;[] ret = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;short&lt;/span&gt;[length];
    &lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0;
    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; pBaits.Length; i += 2)
    {
        ret[j] = BitConverter.ToInt16(pBaits, i);
        j++;
    }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (ret);
}&lt;/pre&gt;

&lt;p&gt;Ovviamente per gli int32 si deve spostarsi di 4 byte, per gli int64 di 8 byte e così via.&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;short&lt;/span&gt;[] pippo = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;short&lt;/span&gt;[] { 100, 156, 234, 322 };
&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] pluto = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[pippo.Length * 2];
&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0;
&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; pippo.Length; i++)
{
    &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] pezzo = BitConverter.GetBytes(pippo[i]);
    pluto[j] = pezzo[0];
    j++;
    pluto[j] = pezzo[1];
    j++;
}

&lt;span class="kwrd"&gt;short&lt;/span&gt;[] resultShort = GetShortArray(pluto);&lt;/pre&gt;

&lt;p&gt;Il programmino becero qui sopra fa un test con questo risultato:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Un-paio-di-operazioni-rare-e-quindi-diff_105C3/convertino_02_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="convertino_02" border="0" alt="convertino_02" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Un-paio-di-operazioni-rare-e-quindi-diff_105C3/convertino_02_thumb.jpg" width="162" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ovviamente ci sono modi + eleganti di procedere all’estrazione dei byte  e se i byte vi arrivano da una seriale già in riga potete convertirli velocemente come è successo a me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#006a9d" size="3"&gt;Convertire un numero in una stringa in formato binario:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se vi dovesse necessitare esaminare un numero intero o un byte per fare un Or oppure uno Xor, il metodo migliore è verificare i bit che lo compongono, ovviamente c’è la calcolatrice scientifica di windows, grazie al cielo, ma se ne avete un array intero è lungo quindi ecco come fare in C#:&lt;/p&gt;

&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetBitString(&lt;span class="kwrd"&gt;byte&lt;/span&gt; pVal)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (Convert.ToString(pVal, 2));
}

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetOctalString(&lt;span class="kwrd"&gt;byte&lt;/span&gt; pVal)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (Convert.ToString(pVal, 8));
}&lt;/pre&gt;

&lt;p&gt;Come vedete ho fatto due metodi solo per mostrare che il secondo parametro è la base in cui rappresentare il numero, pertanto 2 per un numero binario, 8 per un ottale, 16 per un esadecimale e così via. Il risultato del mio test è:&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Un-paio-di-operazioni-rare-e-quindi-diff_105C3/convertino_01_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="convertino_01" border="0" alt="convertino_01" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Un-paio-di-operazioni-rare-e-quindi-diff_105C3/convertino_01_thumb.jpg" width="158" height="173" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verificate a manina e vedrete che è corretto, pertanto grazie a .Net.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/896.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/10/12/convertire-byte-in-int16-e-convertire-un-numero-in-stringa.aspx</guid>
            <pubDate>Wed, 12 Oct 2011 17:21:07 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/896.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/10/12/convertire-byte-in-int16-e-convertire-un-numero-in-stringa.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/896.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Evitare problemi con il BOM lavorando con un HTTP Listener</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/10/09/evitare-problemi-con-il-bom-lavorando-con-un-http-listener.aspx</link>
            <description>&lt;p&gt;Stiamo implementando un servizio interno (interno vuol dire che lavora in una intranet), per uno dei software della mia azienda, il servizio scambia messaggi con i pc client dove gira l’applicazione. I dati scambiati sono spediti come una classe XML ad un HTTP Listener.&lt;/p&gt;  &lt;p&gt;Sembrava tutto semplice eccetto che, quando la classe XML arrivava al listener, il deserializzatore dava i numeri dicendo che la classe non era correttamente formattata.&lt;/p&gt;  &lt;p&gt;Dopo una serie di approfondite verifiche sul nostro codice (Io parto sempre dal presupposto che le probabilità che abbia fatto dei danni è maggiore nel codice scritto da me rispetto a quello scritto in una libreria di sistema o un componente di terzi.) Non trovando nulla nel codice dei metodi di serializzazione e deserializzazione, abbiamo predisposto uno sniffer sui dati che arrivavano al listener nella response, abbiamo scoperto che i dati serializzati avevano 3 bytes  che precedevano &amp;lt;?xml l’iniziale di tutti i files XML, in esadecimale si tratta dei valori EB BB BF, non capivamo cosa fosse e dopo aver passato alcuni momenti a pensare che cosa potesse esserci di sbagliato nel nostro codice per  produrre questo problema, abbiamo fatto una ricerca su internet e abbiamo imparato qualcosa di importante (come sempre non si finisce mai di imparare…) Ad ogni modo, abbiamo scoperto che i tre caratteri invisibili sono un BOM (Byte Order Mark – Segno di Ordinamento dei Byte) che è automaticamente aggiunto dai sistemi di serializzazione quando si effettua un encoding  in UTF-8. Notepad, Notepad++ e altri editor di testo o lettori di XML e testo ignorano il BOM pertanto non ci accorgeremo mai di lui ma si trova li. Il problema del mio servizio era dovuto al fatto che deserializzando da una stringa, i tre caratteri non venivano eliminati e il metodo di deserializzazione dava un errore dicendo che c’erano dei caratteri non compatibili all’inizio della classe.  &lt;/p&gt;  &lt;p&gt;C’è un modo per evitare il problema del BOM? Certo è uno dei parametri forniti al serializzatore da  &lt;font color="#00df38"&gt;&lt;strong&gt;XmlWriterSettings&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;  &lt;pre class="CSharpFormat"&gt;XmlWriterSettings xstt = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlWriterSettings();
xstt.Encoding = Encoding.UTF8 : &lt;span class="kwrd"&gt;new&lt;/span&gt; UTF8Encoding(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
&lt;span class="kwrd"&gt;using&lt;/span&gt; (XmlWriter writer = XmlWriter.Create(stream, xstt))
{
   ...
}&lt;/pre&gt;

&lt;p&gt;Usando questa opzione per serializzare la classe, evitiamo che venga generato il BOM e quindi i problemi di deserializzazione.&lt;/p&gt;

&lt;p&gt;Spero che questo articolo possa dare una mano a qualcuno con lo stesso problema risparmiandogli tempo e frustrazioni. &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Occhiolino" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/d833b34e42a0_BE20/wlEmoticon-winkingsmile_2.png" /&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/895.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/10/09/evitare-problemi-con-il-bom-lavorando-con-un-http-listener.aspx</guid>
            <pubDate>Sun, 09 Oct 2011 20:33:48 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/895.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/10/09/evitare-problemi-con-il-bom-lavorando-con-un-http-listener.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/895.aspx</wfw:commentRss>
        </item>
        <item>
            <title>La password fantasma&amp;hellip;</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/10/05/la-password-fantasmahellip.aspx</link>
            <description>&lt;p&gt;Fra ieri e oggi, abbiamo perso circa 8 ore di lavoro 4 x 2 persone per correre dietro al problema in oggetto. Una classe Data Provider usata N volte nei nostri progetti, di punto in bianco ha cambiato modo di funzionare, producendo errori incomprensibili.&lt;/p&gt;  &lt;p&gt;Antefatto: Sto testando una serie di classi per una applicazione usando una semplice applicazione di test, visto che ho 2 diversi database su cui faccio i test, ho inserito una stringa di connessione in una textbox precompilata, in modo che posso cambiarla al volo.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Data Source&lt;/strong&gt;&lt;/font&gt;=NomeServer;&lt;strong&gt;&lt;font color="#0000ff"&gt;Initial Catalog&lt;/font&gt;&lt;/strong&gt;=NomeDatabase;&lt;font color="#0000ff"&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;/font&gt;=LaPassword;&lt;strong&gt;&lt;font color="#0000ff"&gt;User ID&lt;/font&gt;&lt;/strong&gt;=LUtente;&lt;/p&gt;  &lt;p&gt;La password era nella forma qui sopra. Nei vari test che ho fatto, uno di essi utilizza una classe &lt;strong&gt;DataProvider&lt;/strong&gt; in cui c’è un &lt;strong&gt;Dataset&lt;/strong&gt;, contenente una &lt;strong&gt;DataTable&lt;/strong&gt;, governata da un &lt;strong&gt;SqlDataAdapter&lt;/strong&gt;, 4 &lt;strong&gt;SqlCommand&lt;/strong&gt;, una &lt;strong&gt;SqlConnection&lt;/strong&gt;. Queste classi sono quelle che usualmente utilizziamo per il CRUD di tutte le tabelle e hanno sempre funzionato correttamente. Ieri sera invece una operazione di tipo &lt;strong&gt;Fill&lt;/strong&gt; (chiamata alla Fill del &lt;em&gt;DataAdapter&lt;/em&gt;) &lt;strong&gt;AddRow&lt;/strong&gt;, &lt;strong&gt;Update&lt;/strong&gt; (chiamata alla Update del &lt;em&gt;DataAdapter&lt;/em&gt;) dava un errore dicendo che l’utente non aveva diritto di eseguire il login a SQL Server.&lt;/p&gt;  &lt;p&gt;Dopo 3 ore di debug passo passo e un paio di tentativi di taglio di vene per lungo, abbiamo scoperto che il &lt;strong&gt;DataAdapter&lt;/strong&gt;, dopo la chiamata alla &lt;strong&gt;Fill&lt;/strong&gt; eliminava la password dalla proprietà ConnectionString dell’oggetto &lt;strong&gt;SqlConnection&lt;/strong&gt; in automatico. Siccome era una delle classi che usiamo quotidianamente in tutte le nostre applicazioni abbiamo finito per domandarci come fosse possibile che fino a ieri funzionasse tutto.     &lt;br /&gt;Abbiamo fatto un nuovo test debuggando una delle nostre applicazioni e verificato una delle nostre connection string applicative scoprendo con gioia di non essere del tutto pazzi, ma che il problema era determinato dal fatto che la connection string avrebbe dovuto essere così:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Data Source&lt;/strong&gt;&lt;/font&gt;=NomeServer;&lt;font color="#0000ff"&gt;&lt;strong&gt;Initial Catalog&lt;/strong&gt;&lt;/font&gt;=NomeDatabase;&lt;font color="#0000ff"&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;/font&gt;=LaPassword;&lt;font color="#0000ff"&gt;&lt;strong&gt;User ID&lt;/strong&gt;&lt;/font&gt;=LUtente;&lt;strong&gt;&lt;font color="#0000ff"&gt;Persist Security Info&lt;/font&gt;&lt;/strong&gt;=true;&lt;/p&gt;  &lt;p&gt;Pertanto, se per caso vi capitasse che un &lt;strong&gt;DataAdapter&lt;/strong&gt; dopo la prima chiamata ad uno dei suoi command si mangi la password, il motivo è questo. La clausola Persist Security Info è fra quelle “sconsigliate” e in sua assenza, dopo una apertura della connection a SQL Server, la password viene eliminata.  E’ una cosa mi dicono essere logica e viene fatta per questioni di sicurezza. Questo tipo di problema riesce a farti sentire un idiota, anche perché uno si chiede, ma come è possibile che non mi sia mai successo da quando lavoro con SQL Server (2003) e .Net.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/891.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/10/05/la-password-fantasmahellip.aspx</guid>
            <pubDate>Wed, 05 Oct 2011 12:07:48 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/891.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/10/05/la-password-fantasmahellip.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/891.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Usare IIS per debuggare una Service Application WCF su IIS 64Bit</title>
            <category>ASP.Net</category>
            <category>Web Services</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/09/27/usare-iis-per-debuggare-una-service-application-wcf-su-iis.aspx</link>
            <description>&lt;p&gt;Un post annotazione, per non dimenticare come al solito.&lt;/p&gt;  &lt;p&gt;Creando un nuovo Webservice usando un progetto WCF Service application, il sistema come sempre propone di debuggarlo sul webservice locale, se però dobbiamo fare dei test da macchine diverse per quel che riguarda il Client del nostro Webservice in fase di sviluppo potrebbe risultare difficile connettersi al Web Server di sviluppo, pertanto è opportuno pubblicare l’applicazione su IIS. per farlo bisogna fare una modifica alla configurazione dell’applicazione:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_01_2.jpg" rel="lightbox"&gt;&lt;img style="display: inline" title="webapp_service_01" alt="webapp_service_01" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_01_thumb.jpg" width="618" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dopo questa operazione, la cartella del vostro progetto diverrà una virtual directory sul Website di default di IIS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_05_2.jpg" rel="lightbox"&gt;&lt;img style="display: inline" title="webapp_service_05" alt="webapp_service_05" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_05_thumb.jpg" width="537" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Importante!!! fate questa operazione o non funzionerà nulla o quasi, perché la virtual directory di IIS non riconosce bin\debug o bin\release o nel nostro caso bin\x86\debug.&lt;/p&gt;  &lt;p&gt;Fatto questo, se siete su una macchina a 64bit e la vostra applicazione è compilata a 32bit è necessario indicare ad IIS che volete far funzionare applicazioni a 32Bit sull’application pool usato da ASP.Net pertanto aprite il manager di IIS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_02_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="webapp_service_02" border="0" alt="webapp_service_02" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_02_thumb.jpg" width="644" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Selezionate l’application pool dell’applicazione.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_03_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="webapp_service_03" border="0" alt="webapp_service_03" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_03_thumb.jpg" width="644" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cliccate sugli Advanced settings dell’application pool.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_04_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="webapp_service_04" border="0" alt="webapp_service_04" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_04_thumb.jpg" width="397" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Attivate le applicazioni a 32 bit e fate il restart del Website.&lt;/p&gt;  &lt;p&gt;Se lanciando la web application ricevete questa schermata:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_06_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="webapp_service_06" border="0" alt="webapp_service_06" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_06_thumb.jpg" width="644" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Il Webservice funziona perfettamente, vi manca solo una pagina di benvenuto, ma utilizzando lo startup multiplo dal menu   &lt;br /&gt;Solution &amp;gt; Tasto destro &amp;gt; Properties&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_07_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="webapp_service_07" border="0" alt="webapp_service_07" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Usare-IIS_EFBE/webapp_service_07_thumb.jpg" width="644" height="406" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;E indicando di far partire il webservice e una Applicazione Windows Forms di Test, potete fare una Webreference al vostro Webservice e fare il debug dei webmethods.&lt;/p&gt;  &lt;p&gt;Buon lavoro a tutti&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/887.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/09/27/usare-iis-per-debuggare-una-service-application-wcf-su-iis.aspx</guid>
            <pubDate>Tue, 27 Sep 2011 15:41:43 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/887.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/09/27/usare-iis-per-debuggare-una-service-application-wcf-su-iis.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/887.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di pesca .Net in C# parte 7 e 3 quarti</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/09/27/lezioni-di-pesca-.net-in-c-parte-7-e-3.aspx</link>
            <description>&lt;p&gt;Una lezione un po' anomala prima della numero 8 che proseguirà il normale flusso della serie di lezioni di pesca in questa lezione parliamo un po' di come crearsi delle librerie di codice riusabile, mentre nel nostro progetto compariranno "magicamente" due librerie che sono state sviluppate nella serie di articoli "Fritto Misto" aggiornate al framework 4.0. Ne approfitteremo per illustrare come si Estende una classe .Net del framework e per aggiornare alcune cose del nostro progetto prima di proseguire con una lezione dedicata alla serializzazione XML "seria". &lt;/p&gt; &lt;!-- copy and paste. Modify height and width if desired. --&gt;  &lt;p&gt;&lt;object id="scPlayer" width="720" height="450" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/FirstFrame.jpg&amp;amp;containerwidth=720&amp;amp;containerheight=450&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=true&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/nonsolohello7_3_4.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/444786b1-9d30-4fbf-99a7-965cdf57d435/embed" height="450" width="720"&gt;&lt;/iframe&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=53A8CAIy4mY%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Il Link del codice a corredo della lezione&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.screencast.com/t/9nda3dhd"&gt;Il Link per lo scaricamento del Webcast&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9af1a180-870d-4e8e-8f83-963a14fc422f" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/class" rel="tag"&gt;class&lt;/a&gt;,&lt;a href="http://technorati.com/tags/collection" rel="tag"&gt;collection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/extension" rel="tag"&gt;extension&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/886.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/09/27/lezioni-di-pesca-.net-in-c-parte-7-e-3.aspx</guid>
            <pubDate>Tue, 27 Sep 2011 15:01:16 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/886.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/09/27/lezioni-di-pesca-.net-in-c-parte-7-e-3.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/886.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di pesca .Net in C# parte 7</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/09/14/lezioni-di-pesca-.net-in-c-parte-7.aspx</link>
            <description>&lt;p&gt;Dopo una lunga pausa proseguo la serie dei webcast dedicati agli sviluppatori principianti proseguendo con una lezione dedicata a mostrare l’uso dell’ereditarietà, l’uso di enumerazioni, l’uso di collezioni in una classe e ovviamente come serializzarla e deserializzarla in modo standard. Inoltre dimostro l’uso del sort all’interno di una collezione e come creare una ToString alternativa utilizzando i dati ordinati.&lt;/p&gt;  &lt;p&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt;&lt;object id="scPlayer" width="640" height="450" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=450&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=true&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/Unpopiudihello07.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/d112cb94-5718-450f-9377-4b0f2fa37398/embed" height="450" width="640"&gt;&lt;/iframe&gt;&lt;/object&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5fdac0e7-590b-4971-811b-4a89ee8ea451" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/classi" rel="tag"&gt;classi&lt;/a&gt;,&lt;a href="http://technorati.com/tags/inheritance" rel="tag"&gt;inheritance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/serialization" rel="tag"&gt;serialization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;a href="http://www.screencast.com/t/HwE2zkGaDC" target="_blank"&gt;A questo indirizzo potete scaricare il webcast.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=bsjJL7h0Pok%3d&amp;amp;tabid=191&amp;amp;mid=727" target="_blank"&gt;A questo link il codice a corredo della lezione&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/878.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/09/14/lezioni-di-pesca-.net-in-c-parte-7.aspx</guid>
            <pubDate>Wed, 14 Sep 2011 17:43:06 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/878.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/09/14/lezioni-di-pesca-.net-in-c-parte-7.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/878.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Installare SQL Server 2008 Express Edition su Windows 2008 R2 64bit</title>
            <category>Gestione Dati</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/09/14/installare-sql-server-2008-express-edition-su-windows-2008-r2.aspx</link>
            <description>&lt;p&gt;Un Webcast di tipo Sistemistico per spiegare come installare SQL Server Express edition configurandolo in modo professionale, era dai tempi di MSDE che non replicavo questo tipo di post, pertanto ho ritenuto opportuno farlo, soprattutto perché mi sono trovata da un paio di clienti ove ho trovato la classica installazione Avanti –&amp;gt; Avanti –&amp;gt; Invio e quindi ho creduto opportuno dare modo anche a chi non è un sistemista esperto di sapere come e soprattutto perché fare determinate operazioni quando si installa SQL Server. Replicherò anche con una versione non express prossimamente, aggiungendo anche la parte di configurazione degli utenti di servizio.&lt;/p&gt;  &lt;p&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt;&lt;object id="scPlayer" width="800" height="450" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/FirstFrame.jpg&amp;amp;containerwidth=800&amp;amp;containerheight=450&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=true&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/sqlexpress_install.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DNW_Sql/media/a57803df-20c1-4e9e-8d29-adeb970d7134/embed" height="450" width="800"&gt;&lt;/iframe&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0fcf41dc-2849-4416-a949-1870746a2ac4" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/SQL" rel="tag"&gt;SQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Install" rel="tag"&gt;Install&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SqlExpress" rel="tag"&gt;SqlExpress&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;a href="http://www.screencast.com/t/w2kb8J8hTwZ" target="_blank"&gt;A questo indirizzo potete scaricare il webcast.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/877.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/09/14/installare-sql-server-2008-express-edition-su-windows-2008-r2.aspx</guid>
            <pubDate>Wed, 14 Sep 2011 17:21:40 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/877.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/09/14/installare-sql-server-2008-express-edition-su-windows-2008-r2.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/877.aspx</wfw:commentRss>
        </item>
        <item>
            <title>HTTP Listener e XML</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/08/10/http-listener-e-xml.aspx</link>
            <description>&lt;p&gt;Oggi, lavorando ad un piccolo progetto che coinvolgeva l’oggetto .NET nel titolo, ci siamo imbattuti in una stranezza, ovvero se trasmettevo tramite una HTTP Get un dato al listener che conteneva una stringa (“Buongiorno, sono la stringa”) arrivava esattamente come trasmessa, mentre se trasmettevo la serializzazione di una classe in XML la stringa risultante era diversa da quella trasmessa e davanti al &amp;lt;?xml c’erano 3 caratteri strani, ovvero una i con la umlaot, una doppia virgoletta chiusa e un punto di domanda rovescio. Rovistando sulla stringa ci siamo accorti che la serializzazione XML per default inserisce come primo carattere della stringa/file serializzato il carattere unicode &lt;strong&gt;\UFEFF&lt;/strong&gt;, che è un carattere non visibile (lo scarta automaticamente anche notepad), questo carattere serve a chi poi riceve la stringa per capire se si tratta di testo &lt;em&gt;BigEndian&lt;/em&gt; o &lt;em&gt;LittleEndian&lt;/em&gt;, potete leggere il dettaglio su &lt;a href="http://en.wikipedia.org/wiki/byte_order_mark"&gt;Wikipedia&lt;/a&gt; se siete curiosi. Questo carattere unicode può essere fatto omettere al serializzatore .NET inserendo negli &lt;font color="#7cc80b"&gt;&lt;strong&gt;XmlWriterSettings&lt;/strong&gt;&lt;/font&gt; che si passano all’&lt;font color="#04a5e1"&gt;&lt;strong&gt;XmlSerializer&lt;/strong&gt;&lt;/font&gt; il parametro &lt;font color="#ff0000"&gt;&lt;strong&gt;Encoding&lt;/strong&gt;&lt;/font&gt;=&lt;font color="#0000ff"&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/font&gt; se non vogliamo questo carattere. Ovviamente togliere il carattere non è esattamente la soluzione al problema, anche se può essere un buon workaround, la soluzione vera è fare un &lt;strong&gt;UrlEncoding&lt;/strong&gt; della stringa XML prima di spedirla con il GET, oppure, se vogliamo essere categorici, possiamo convertire la stringa XML in un Base64 e riconvertirla in unicode all’arrivo al listener.&lt;/p&gt;  &lt;p&gt;Usualmente ci si accorge di questo errore perché deserializzando la classe si riceve la seguente eccezione:&lt;/p&gt;  &lt;pre&gt;System.Xml.XmlException
Data at the root level is invalid. Line 1, position 1.&lt;/pre&gt;

&lt;p&gt;ecco invece uno screenshot del formato della stringa XML&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/HTTP-Listener-e-XML_C52C/xml_err_2.jpg" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="xml_err" border="0" alt="xml_err" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/HTTP-Listener-e-XML_C52C/xml_err_thumb.jpg" width="386" height="112" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:89c86d07-6a30-48cb-bdf3-a73c7ec5c474" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTPListener" rel="tag"&gt;HTTPListener&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Encoding" rel="tag"&gt;Encoding&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/860.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/08/10/http-listener-e-xml.aspx</guid>
            <pubDate>Wed, 10 Aug 2011 14:28:22 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/860.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/08/10/http-listener-e-xml.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/860.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Associare pi&amp;ugrave; domini ad un sito web generato con Plesk</title>
            <category>ASP.Net</category>
            <category>Argomenti vari</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/26/associare-piugrave-domini-ad-un-sito-web-generato-con-plesk.aspx</link>
            <description>&lt;p&gt;Probabilmente è una notizia arcinota da chi quotidianamente lavora con Plesk, io invece lo uso molto raramente, e lo conosco veramente al minimo. Però, se come me avete un virtual server aziendale, quasi tutti i provider ve lo installano come oggetto per la creazione di domini e siti, presumo per evitare di avere milioni di chiamate dagli utenti inesperti come me.&lt;/p&gt;  &lt;p&gt;E’ normale che una azienda abbia più di un dominio (.it, .com, .eu, .net) e chi più ne ha più ne metta, collegati al proprio sito, ma ovviamente non facciamo una copia del sito per ogni dominio, oppure diverrebbe deprimente tenerli aggiornati.&lt;/p&gt;  &lt;p&gt;Nel mio caso, il sito della mia azienda è stato creato con un DotNetNuke, che è così gentile da permettere non solo di mappare più domini su uno stesso portale, ma permette anche, volendolo, di avere più portali diversi sullo stesso DNN. &lt;/p&gt;  &lt;p&gt;Entrando dentro a Plesk, quando devi mappare i domini secondari ti verrebbe naturale generare un nuovo dominio, ma la generazione di un nuovo dominio da parte di Plesk ha solo 3 opzioni, dominio fisico, forward, frame forward. Nessuno dei tre è quello che vogliamo noi.&lt;/p&gt;  &lt;p&gt;Infatti non è quello che dobbiamo fare. Per mappare più domini su un singolo DotNetNuke usando Plesk, bisogna selezionare il dominio fisico e generare dei Domain Alias. Uno per ogni dominio da mappare. Operazione da 30 secondi, basta infatti indicare il nome di dominio e selezionare la checkbox WEB, salvando il tutto.&lt;/p&gt;  &lt;p&gt;Fatto questo, si passa a DotNetNuke, si va sull’host (&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="A bocca aperta" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Associare-pi-domini-ad-un-sito-web-gener_B731/wlEmoticon-openmouthedsmile_2.png" /&gt; i friulani sanno perché rido) e si aggiunge al portale che deve mapparli, i domini prescelti usando l’opzione portal alias. L’effetto è immediato.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:36a5dae2-74cf-4259-9722-59c2e9a2c759" class="wlWriterSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Plesk" rel="tag"&gt;Plesk&lt;/a&gt;,&lt;a href="http://technorati.com/tags/domain" rel="tag"&gt;domain&lt;/a&gt;,&lt;a href="http://technorati.com/tags/alias" rel="tag"&gt;alias&lt;/a&gt;,&lt;a href="http://technorati.com/tags/portal" rel="tag"&gt;portal&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/825.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/26/associare-piugrave-domini-ad-un-sito-web-generato-con-plesk.aspx</guid>
            <pubDate>Thu, 26 May 2011 11:01:34 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/825.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/26/associare-piugrave-domini-ad-un-sito-web-generato-con-plesk.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/825.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di [pesca] .Net in C# parte 6</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/21/lezioni-di-pesca-.net-in-c-parte-6.aspx</link>
            <description>&lt;p&gt;In questa sesta lezione di pesca, proseguiamo quanto impostato nella scorsa lezione e creiamo la nostra prima collezione tipizzata di classi di tipo Competence. Generiamo la bozza della classe Developer, la classe principale di questo piccolo progetto e proseguiamo verificando come serializzare il nostro Developer su disco e rigenerare la classe leggendola da disco.&lt;/p&gt; &lt;object id="scPlayer" width="750" height="560" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=560&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/unpopiudihello06.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/662ec505-1b79-4a5e-9d1e-300068a978ea/embed" height="560" width="750"&gt;&lt;/iframe&gt;&lt;/object&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=L5C6Ckna7kk%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Codice a corredo della lezione 6&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4f25fded-a966-443b-adfc-b93ccf380aef" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/class" rel="tag"&gt;class&lt;/a&gt;,&lt;a href="http://technorati.com/tags/collection" rel="tag"&gt;collection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/serialization" rel="tag"&gt;serialization&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;In caso non foste in grado di vedere direttamente il filmato, il &lt;a href="http://www.screencast.com/t/gcNZHsgUj"&gt;link al webcast per lo scaricamento è questo&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/817.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/21/lezioni-di-pesca-.net-in-c-parte-6.aspx</guid>
            <pubDate>Sat, 21 May 2011 14:25:22 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/817.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/21/lezioni-di-pesca-.net-in-c-parte-6.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/817.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di &amp;ldquo;pesca&amp;rdquo; .Net in C# parte 5</title>
            <category>WinForms</category>
            <category>Helper e Generics</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/15/lezioni-di-ldquopescardquo-.net-in-c-parte-5.aspx</link>
            <description>&lt;p&gt;Siamo arrivati alla quinta lezione di C# della serie, abbiamo concluso la gestione della nostra prima classe, la classe persona, pertanto per proseguire e presentare tutti gli aspetti di quello che si può fare con C# iniziamo a pensare a una piccola applicazione, che ci permetterà di spiegare le enumerazioni, le collezioni, l'ereditarietà, la serializzazione XML e probabilmente molte altre cose che verranno.&lt;/p&gt;  &lt;p&gt;Avendo come base la classe persona, ho deciso di creare una classe per gestire il curriculum di un programmatore con informazioni anagrafiche, un minimo di informazioni "fiscali", una collezione di competenze che descrivano quello che lui sa fare ed una collezione di lingue conosciute con la loro descrizione. In seguito magari potremo estendere ulteriormente il tutto. &lt;/p&gt;  &lt;p&gt;In questo Webcast, oltre a spiegare a grandi linee cosa faremo nelle prossime lezioni, creiamo una Enumerazione e vediamo come si usa, e creiamo la classe base Competence per descrivere le competenze del programmatore, gli aggiungiamo funzionalità e spieghiamo come salvare su disco le informazioni usando XML e spiegando le basi della serializzazione (qualcosa di non nuovo a questo blog, che però in un webcast permette di approfondire i vari concetti di base). &lt;/p&gt;  &lt;p&gt;Come sempre buona “pesca” e alla prossima lezione.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;object id="scPlayer" width="750" height="560" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=560&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/unpopiudihello05.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/82f205a9-4880-427e-b30f-d227bcd65410/embed" height="560" width="750"&gt;&lt;/iframe&gt;&lt;/object&gt;  &lt;p&gt;Il link al &lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=U_nop3WEZAE%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;codice sorgente della quinta lezione&lt;/a&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1937d99d-6a05-4a58-b0b1-212c64182a80" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/class" rel="tag"&gt;class&lt;/a&gt;,&lt;a href="http://technorati.com/tags/enum" rel="tag"&gt;enum&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;Il link al webcast se avete problemi a visualizzarlo direttamente è questo: &lt;a href="http://www.screencast.com/t/zyFquPqX6xP"&gt;Un po' piu' di hello World - lezione 5&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/815.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/15/lezioni-di-ldquopescardquo-.net-in-c-parte-5.aspx</guid>
            <pubDate>Sun, 15 May 2011 09:28:55 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/815.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/15/lezioni-di-ldquopescardquo-.net-in-c-parte-5.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/815.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Usare il multithreading in C# .Net Webcast della sessione del 28/04/2011</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/08/usare-il-multithreading-in-c-.net-webcast-della-sessione-del.aspx</link>
            <description>&lt;p&gt;Come promesso al Workshop, pubblico oggi il webcast della sessione effettuata il 28/04/2011 al Workshop gratuito Spring Blossoms 2011, in questa sessione ho spiegato le basi dell’uso di applicazioni multithreading in C# che interagiscono con l’interfaccia utente di una applicazione Windows Forms.&lt;/p&gt;  &lt;p&gt;In questo webcast, c’è una parte di spiegazione su slide e una parte, abbastanza estesa di spiegazione sul codice demo.&lt;/p&gt;  &lt;p&gt;Il codice a corredo si trova al link postato in fondo a questo post. Pertanto Buona visione e ascolto e per ogni domanda, quesito, dubbio, errore, omissione, potete usare i commenti o un messaggio inviato direttamente dal link in cima al blog.&lt;/p&gt; &lt;object id="scPlayer" width="750" height="516" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/scplayer.swf"&gt;&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/scplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=516&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/threadsworkshop.mp4&amp;amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/" /&gt;&lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ca365382-2f69-45c7-9a2c-57cf67af2c4c/embed" height="516" width="750"&gt;&lt;/iframe&gt;&lt;/object&gt;  &lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=g4fSKHc-WOs%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Il codice demo a corredo del progetto&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:006b76b3-d810-48b4-ba44-dce8f05607ac" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Thread" rel="tag"&gt;Thread&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Multithreading" rel="tag"&gt;Multithreading&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Semaphore" rel="tag"&gt;Semaphore&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SemaphoreSlim" rel="tag"&gt;SemaphoreSlim&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Lock" rel="tag"&gt;Lock&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EventWaitHandle" rel="tag"&gt;EventWaitHandle&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/807.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/08/usare-il-multithreading-in-c-.net-webcast-della-sessione-del.aspx</guid>
            <pubDate>Sun, 08 May 2011 17:15:58 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/807.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/08/usare-il-multithreading-in-c-.net-webcast-della-sessione-del.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/807.aspx</wfw:commentRss>
        </item>
        <item>
            <title>TFS Correggere un errore spaziotemporale</title>
            <category>Argomenti vari</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/06/tfs-correggere-un-errore-spaziotemporale.aspx</link>
            <description>&lt;p&gt;Lo scorso 5 maggio, in ufficio è saltata la corrente, si sono spenti tutti i server e c’è stato un problema sul restart del domain controller, pertanto, senza accorgerci della cosa, ci siamo trovati a lavorare con la data di Team Foundation Server modificata all’ 8/5/2011. La cosa è stata sistemata non appena qualcuno ha guardato il calendario, cioè a metà pomeriggio &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="A bocca aperta" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/f19ff49d15e5_F2C2/wlEmoticon-openmouthedsmile_2.png" /&gt;&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="A bocca aperta" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/f19ff49d15e5_F2C2/wlEmoticon-openmouthedsmile_2.png" /&gt;&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="A bocca aperta" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/f19ff49d15e5_F2C2/wlEmoticon-openmouthedsmile_2.png" /&gt;.&lt;/p&gt;  &lt;p&gt;Intanto erano stati fatti alcuni checkin di varie modifiche. Ci siamo accorti che questo era un problema poco fa, quando cercando di fare un Checkin, il TFS ha dato questo messaggio agghiacciante.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;TF54000: Cannot update data because the server clock may have been set incorrectly. Contact your Team Foundation Server Administrator.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Siccome l’administrator sono io non sapevo cosa fare anche dopo essermi contattata &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Con la lingua fuori" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/f19ff49d15e5_F2C2/wlEmoticon-smilewithtongueout_2.png" /&gt; quindi ho fatto un giro sui forum Microsoft e scoperto che potevo fare 2 cose:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Aspettare di fare il checkin fino a lunedì prossimo (fattibile ma non proprio bellissimo)&lt;/li&gt;    &lt;li&gt;Andare a modificare i Changeset del TFS con la data sbagliata.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;ovviamente l’opzione scelta è stata la seconda, posto qui lo script lanciato sul SQL Server del TFS per rimettere tutto a posto:&lt;/p&gt;  &lt;pre&gt;UPDATE tbl_ChangeSet
	SET CreationDate = CreationDate -3 WHERE CreationDate &amp;gt; GETDATE()&lt;/pre&gt;

&lt;p&gt;Questo ha corretto tutti i changeset errati riportandoli alla data giusta togliendo 3 giorni alla data impostata.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:79b1cefc-adeb-422d-a2d2-2fe208b039a3" class="wlWriterEditableSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQLserver" rel="tag"&gt;SQLserver&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/804.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/06/tfs-correggere-un-errore-spaziotemporale.aspx</guid>
            <pubDate>Fri, 06 May 2011 15:27:17 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/804.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/06/tfs-correggere-un-errore-spaziotemporale.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/804.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di &amp;ldquo;pesca&amp;rdquo; .Net in C# parte 4</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/03/lezioni-di-ldquopescardquo-.net-in-c-parte-4.aspx</link>
            <description>&lt;p&gt;Ho voluto pubblicare subito la quarta lezione di pesca sia per mantenere il ritmo di una a settimana, e tra la seconda e la terza ne ho saltate un paio, sia perché questa quarta lezione conclude la parte iniziale del corso, spiegando come completare la gestione della creazione, salvataggio, modifica, cancellazione della nostra prima classe, così da chiudere la prima parte per proseguire poi nelle prossime lezioni iniziando a parlare di ereditarietà.&lt;/p&gt; &lt;object id="scPlayer" width="750" height="516" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/scplayer.swf"&gt; &lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/scplayer.swf" /&gt; &lt;param name="quality" value="high" /&gt; &lt;param name="bgcolor" value="#FFFFFF" /&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=516&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/unpopiudihello04.mp4&amp;amp;blurover=false" /&gt; &lt;param name="allowFullScreen" value="true" /&gt; &lt;param name="scale" value="showall" /&gt; &lt;param name="allowScriptAccess" value="always" /&gt; &lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/" /&gt; &lt;iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/92715d4f-476e-4f9d-b37f-2f1ae11fd2e0/embed" height="516" width="750"&gt;&lt;/iframe&gt; &lt;/object&gt;  &lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=wdmmTzNlw-U%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Codice a corredo della quarta lezione&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09ccba0a-5f90-4cab-921a-2aba8c9dd5b5" class="wlWriterSmartContent"&gt;Tag di Technorati: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/classi" rel="tag"&gt;classi&lt;/a&gt;,&lt;a href="http://technorati.com/tags/I%2fO" rel="tag"&gt;I/O&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ListView" rel="tag"&gt;ListView&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;&lt;a href="http://www.screencast.com/t/nnQojUWj"&gt;Questo è il link per il download del webcast&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/800.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/03/lezioni-di-ldquopescardquo-.net-in-c-parte-4.aspx</guid>
            <pubDate>Tue, 03 May 2011 20:20:56 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/800.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/03/lezioni-di-ldquopescardquo-.net-in-c-parte-4.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/800.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lavorare con dati di grandi dimensioni in SQL Server</title>
            <category>WinForms</category>
            <category>Gestione Dati</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/05/02/lavorare-con-dati-di-grandi-dimensioni-in-sql-server.aspx</link>
            <description>&lt;p&gt;Come promesso al workshop di Pordenone dello scorso 28 Aprile 2011, ho preparato il webcast del primo dei miei due interventi, quello relativo alla manipolazione di dati binari di grandi dimensioni su database SQL Server usando la scrittura e la lettura per Segmenti (Chunks).&lt;/p&gt;
&lt;p&gt;In questo webcast composto da una parte spiegata su powerpoint e una seconda parte che mostra i punti principali del progetto demo a corredo, spieghiamo come fare a Scrivere su campi di tipo Image o di tipo VarBinary(max) suddividendo i dati binari in segmenti per poter gestire la memorizzazione di files di grandi dimensioni in un database. &lt;/p&gt;
&lt;object height="516" width="750" id="scPlayer" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/scplayer.swf"&gt;
&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/scplayer.swf" /&gt;
&lt;param name="quality" value="high" /&gt;
&lt;param name="bgcolor" value="#FFFFFF" /&gt;
&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=516&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=true&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/workshop.mp4&amp;amp;blurover=false" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="scale" value="showall" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;
&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/" /&gt; &lt;iframe scrolling="no" height="516" frameborder="0" width="750" type="text/html" style="overflow: hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/228a528d-0480-468d-9235-586db873b668/embed"&gt;&lt;/iframe&gt; &lt;/object&gt;
&lt;p&gt;Codice a corredo: &lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=dz4k-xNs5Qk%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;sqlchunks.zip&lt;/a&gt;   &lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:93b07562-fd6f-46cb-b112-e295ba95f007" class="wlWriterEditableSmartContent"&gt;&lt;br /&gt;
Tag di Technorati: &lt;a href="http://technorati.com/tags/c%23" rel="tag"&gt;c#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sql" rel="tag"&gt;sql&lt;/a&gt;,&lt;a href="http://technorati.com/tags/tsql" rel="tag"&gt;tsql&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sqlserver" rel="tag"&gt;sqlserver&lt;/a&gt;,&lt;a href="http://technorati.com/tags/image" rel="tag"&gt;image&lt;/a&gt;,&lt;a href="http://technorati.com/tags/varbinary" rel="tag"&gt;varbinary&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/799.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/05/02/lavorare-con-dati-di-grandi-dimensioni-in-sql-server.aspx</guid>
            <pubDate>Mon, 02 May 2011 19:48:10 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/799.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/05/02/lavorare-con-dati-di-grandi-dimensioni-in-sql-server.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/799.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di &amp;quot;pesca&amp;quot; .Net in C# parte 3</title>
            <category>Gestione Dati</category>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/04/30/lezioni-di-quotpescaquot-.net-in-c-parte-3.aspx</link>
            <description>&lt;p&gt;Nel terzo webcast della serie che ho chiamato “Non Solo Hello World”, proseguiamo lo sviluppo della nostra applicazione di test iniziando a vedere qualcosa di più sofisticato nella nostra classe dati di base e qualcosa di più sofisticato a livello di interfaccia.&lt;/p&gt;
&lt;p&gt;Risponderemo con una prima versione alla domanda: “Ma come posso salvare dei dati digitati su schermo e persisterli su disco.”&lt;/p&gt;
&lt;p&gt;E vedremo come realizzare una Form che inizi a fornirci i servizi di base per gestire una lista di oggetti su cui compiere le azioni classiche di Nuovo, Modifica, Visualizza.&lt;/p&gt;
&lt;p&gt;Approfitto di questo post per ringraziare le oltre ottanta persone che hanno visualizzato i due webcast già pubblicati, consumando la pur generosa banda offerta dall’account gratuito di Screencast.com in pochissimo tempo. Ho già provveduto ad estendere l’account ad una versione Pro, per darvi modo di vedere i webcast senza limitazioni.&lt;/p&gt;
&lt;p&gt;Grazie ancora e “Buona Pesca”.&lt;/p&gt;
&lt;object height="562" width="750" id="scPlayer" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/scplayer.swf"&gt;
&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/scplayer.swf" /&gt;
&lt;param name="quality" value="high" /&gt;
&lt;param name="bgcolor" value="#FFFFFF" /&gt;
&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=562&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/unpopiudihello03.mp4&amp;amp;blurover=false" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="scale" value="showall" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;
&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/" /&gt; &lt;iframe scrolling="no" height="562" frameborder="0" width="750" type="text/html" style="overflow: hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/ecc126a8-d27d-4b98-b0f5-c7e4eb71c1d6/embed"&gt; &lt;/iframe&gt;&lt;/object&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09ccba0a-5f90-4cab-921a-2aba8c9dd5b5" style="padding: 0px; margin: 0px; display: inline; float: none;"&gt;Tag di Technorati: &lt;a rel="tag" href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/classi"&gt;classi&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/I%2fO"&gt;I/O&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ListView"&gt;ListView&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=NJW8iBRCajM%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Il codice a corredo della terza lezione &lt;/a&gt;
&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/795.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/04/30/lezioni-di-quotpescaquot-.net-in-c-parte-3.aspx</guid>
            <pubDate>Sat, 30 Apr 2011 10:22:43 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/795.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/04/30/lezioni-di-quotpescaquot-.net-in-c-parte-3.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/795.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di &amp;quot;pesca&amp;quot; .Net in C# parte 2</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/04/09/lezioni-di-quotpescaquot-.net-in-c-parte-2.aspx</link>
            <description>&lt;p&gt;Nel secondo webcast della serie dedicata allo sviluppo di una applicazione C#, rispondiamo ad un altro quesito frequente da parte di chi sta iniziando a lavorare in C#.&lt;/p&gt;
&lt;p&gt;“Ma come faccio a passare dei dati da una form ad un altra e poi leggere le modifiche?”&lt;/p&gt;
&lt;p&gt;Anche in questa seconda lezione, l’argomento ci serve per illustrare come iniziare a impostare una vera applicazione creando una ossatura visuale in cui cominciare a lavorare sui dati. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;object height="562" width="750" id="scPlayer" type="application/x-shockwave-flash" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/scplayer.swf"&gt;
&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/scplayer.swf" /&gt;
&lt;param name="quality" value="high" /&gt;
&lt;param name="bgcolor" value="#FFFFFF" /&gt;
&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=562&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/unpopiudihello2.mp4&amp;amp;blurover=false" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="scale" value="showall" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;
&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/" /&gt; &lt;iframe scrolling="no" height="562" frameborder="0" width="750" type="text/html" style="overflow: hidden;" src="http://www.screencast.com/users/Sabrina_C/folders/DotNetWork/media/939e2762-d7f9-463c-9078-4fef36d83aba/embed"&gt;&lt;/iframe&gt; &lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Se non vi fosse possibile vedere il video direttamente è disponibile a questo link &lt;a href="http://www.screencast.com/t/db5jkC4z6"&gt;Un po' piu' di hello World - lezione 2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=s63jZHZupUE%3d&amp;amp;tabid=191&amp;amp;mid=727" target="_blank"&gt;Il codice sorgente a corredo&lt;/a&gt;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f9cef952-a247-40e7-af19-b96c7a17cc4a" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Winforms" rel="tag"&gt;Winforms&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/forms" rel="tag"&gt;forms&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/784.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/04/09/lezioni-di-quotpescaquot-.net-in-c-parte-2.aspx</guid>
            <pubDate>Sat, 09 Apr 2011 11:47:59 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/784.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/04/09/lezioni-di-quotpescaquot-.net-in-c-parte-2.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/784.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lezioni di &amp;ldquo;pesca&amp;rdquo; .Net in C#</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/04/01/lezioni-di-ldquopescardquo-.net-in-c.aspx</link>
            <description>&lt;p&gt;Il primo webcast non si scorda mai… &lt;a rel="lightbox" href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Lezioni-di-pesca-.Net-in-C_12878/bigsmile_2.gif"&gt;&lt;img height="50" width="50" style="margin: 0px 10px 0px 0px; display: inline;" title="bigsmile" alt="bigsmile" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/Lezioni-di-pesca-.Net-in-C_12878/bigsmile_thumb.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Per il primo webcast, di quella che spero sarà una lunga serie, ho deciso di iniziare a dare una mano a quelli che iniziano, rispondendo ai quesiti che io per prima ho posto al mio insegnante, il primo era.&lt;/p&gt;
&lt;p&gt;“Ma come faccio a crearmi delle librerie e poi chiamarle in un diverso progetto?”&lt;/p&gt;
&lt;p&gt;Si tratta in realtà di una scusa per parlare di concetti di base OOP ed iniziare a costruire un progetto che nelle prossime lezioni si evolverà in una applicazione completa in grado di fare se pure in piccolo tutte le cose che una applicazione “reale” deve fare. &lt;/p&gt;
&lt;p&gt;Vi prego di perdonare la rozzezza, ma sto ancora imparando ad usare lo strumento.&lt;/p&gt;
&lt;p&gt;&lt;object height="562" width="750" id="scPlayer" data="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/4917cd7c-169f-4eee-a5dc-b4cb7bb50a16/scplayer.swf" type="application/x-shockwave-flash" jsseektime="function () {&amp;#xD;&amp;#xA;return eval(instance.CallFunction(&amp;quot;&amp;lt;invoke name=\&amp;quot;&amp;quot;+name+&amp;quot;\&amp;quot; returntype=\&amp;quot;javascript\&amp;quot;&amp;gt;&amp;quot; + __flash__argumentsToXML(arguments,0) + &amp;quot;&amp;lt;/invoke&amp;gt;&amp;quot;));&amp;#xD;&amp;#xA;}"&gt;
&lt;param name="movie" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/4917cd7c-169f-4eee-a5dc-b4cb7bb50a16/scplayer.swf" /&gt;
&lt;param name="quality" value="high" /&gt;
&lt;param name="bgcolor" value="#FFFFFF" /&gt;
&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/4917cd7c-169f-4eee-a5dc-b4cb7bb50a16/FirstFrame.jpg&amp;amp;containerwidth=750&amp;amp;containerheight=450&amp;amp;autohide=true&amp;amp;autostart=false&amp;amp;loop=false&amp;amp;showendscreen=true&amp;amp;showsearch=false&amp;amp;showstartscreen=true&amp;amp;tocdoc=float&amp;amp;xmp=sc.xmp&amp;amp;content=http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/4917cd7c-169f-4eee-a5dc-b4cb7bb50a16/Unpopiudihello_01.mp4&amp;amp;blurover=false" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="scale" value="showall" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;
&lt;param name="base" value="http://content.screencast.com/users/Sabrina_C/folders/DotNetWork/media/4917cd7c-169f-4eee-a5dc-b4cb7bb50a16/" /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Se non vi fosse possibile vedere il video direttamente è disponibile a questo link &lt;a href="http://www.screencast.com/t/VkZKC9n9R"&gt;Un Po' più di Hello World Lezione 1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetwork.it/LinkClick.aspx?fileticket=P9GTxVrqSH4%3d&amp;amp;tabid=191&amp;amp;mid=727"&gt;Il codice sorgente a corredo&lt;/a&gt;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f9cef952-a247-40e7-af19-b96c7a17cc4a" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Winforms" rel="tag"&gt;Winforms&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/classi" rel="tag"&gt;classi&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/775.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/04/01/lezioni-di-ldquopescardquo-.net-in-c.aspx</guid>
            <pubDate>Fri, 01 Apr 2011 20:41:52 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/775.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/04/01/lezioni-di-ldquopescardquo-.net-in-c.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/775.aspx</wfw:commentRss>
        </item>
        <item>
            <title>La soluzione ad un piccolo problema di conversione</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/03/29/la-soluzione-ad-un-piccolo-problema-di-conversione.aspx</link>
            <description>&lt;p&gt;Non essendo qualcosa che si usa quotidianamente lo scrivo al solito per trovarlo se mi serve.&lt;/p&gt;  &lt;p&gt;Un collega mi ha chiesto oggi di aiutarlo con un problema nella conversione di una funzione VB in C#, questa funzione calcola il checksum per una stringa rappresentante dei valori esadecimali che deve poi essere spedita ad una device via seriale.&lt;/p&gt;  &lt;p&gt;Il problema era che VB converte “H&amp;amp;F6” in uno short , mentre short.TryParse( “0xF6”, out val) non lo fa.&lt;/p&gt;  &lt;p&gt;Il problema è dovuto al fatto che per default TryParse si aspetta una stringa che contiene un numero e un esadecimale virtualmente non lo è.&lt;/p&gt;  &lt;p&gt;La soluzione è usare la seguente riga di codice:&lt;/p&gt;  &lt;pre&gt;val = Int16.Parse("0xF6", System.Globalization.NumberStyles.HexNumber);&lt;/pre&gt;

&lt;p&gt;Molto facile, ma siccome ci ho perso mezz’ora a trovarla, spero di risparmiarla a qualcun’altro. &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Occhiolino" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/4ade8e62d92b_D1FF/wlEmoticon-winkingsmile_2.png" /&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/772.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/03/29/la-soluzione-ad-un-piccolo-problema-di-conversione.aspx</guid>
            <pubDate>Tue, 29 Mar 2011 15:56:40 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/772.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/03/29/la-soluzione-ad-un-piccolo-problema-di-conversione.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/772.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Catturare lo schermo quando vi sono schermi multipli da C#</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/01/17/catturare-lo-schermo-quando-vi-sono-schermi-multipli-da-c.aspx</link>
            <description>&lt;p&gt;Oggi Stefano, ha fatto una domanda sul forum che sembrava molto semplice.&lt;/p&gt;
&lt;p&gt;“Normalmente uso Screen.PrimaryScreen per catturare lo schermo da C# ma se ho più schermi collegati al pc come posso fare?”&lt;/p&gt;
&lt;p&gt;La risposta era semplice, la classe screen ha una property AllScreens che è un array che ci da informazioni su tutti gli schermi connessi al PC, pertanto si può catturare semplicemente l’immagine di ogni schermo usando un ciclo for con il seguente codice:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;                Bitmap ps = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(x.Bounds.Width, x.Bounds.Height);

                Graphics graphics = Graphics.FromImage(ps &lt;span class="kwrd"&gt;as&lt;/span&gt; Image);
                graphics.CopyFromScreen(x.Bounds.X, x.Bounds.Y, 0, 0, x.Bounds.Size);

                ps.Save(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;@"c:\MultiImage{0}.jpg"&lt;/span&gt;, i), ImageFormat.Jpeg);

                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"DONE &amp;lt;{0}&amp;gt; "&lt;/span&gt;, i) + Environment.NewLine;&lt;/pre&gt;
&lt;p&gt;Ma quello che voleva Stefano, era comporre una singola immagine con lo schermo completo, lo stesso che si ottiene usando un printscreen (STAMP), e questo non è affatto semplice.&lt;/p&gt;
&lt;p&gt;Infatti, ho fatto un test usando 2 schermi (lui ne ha 4) usando il mio notebook, Windows Vista e Seven, (XP non ricordo se lo facesse), quando colleghi uno schermo secondario, ti permettono di posizionarlo da che lato vuoi rispetto al primario, modificando di conseguenza le property che indicano dove si trova lo schermo secondario rispetto al primario.&lt;/p&gt;
&lt;p&gt;A causa di ciò, comporre un’immagine non è così semplice e richiede qualche calcolo, (ovviamente si può anche usare la clipboard volendo, ma essendo qui per imparare C# e .Net ci proviamo in altro modo).&lt;/p&gt;
&lt;p&gt;Ecco che cosa ho fatto:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; width = 0;
            &lt;span class="kwrd"&gt;int&lt;/span&gt; height = 0;
            &lt;span class="kwrd"&gt;int&lt;/span&gt; minx = 0;
            &lt;span class="kwrd"&gt;int&lt;/span&gt; miny = 0;
            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; Screen.AllScreens.Length; i++)
            {
                Screen z = Screen.AllScreens[i];
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.X &amp;lt; minx) minx = z.Bounds.X;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.Y &amp;lt; miny) miny = z.Bounds.Y;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (i == 0)
                {
                    width = z.Bounds.Width;
                    height = z.Bounds.Height;
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    Screen p = Screen.AllScreens[i - 1];
                    &lt;span class="rem"&gt;//Sta a destra&lt;/span&gt;
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.Right &amp;gt; p.Bounds.Right)
                    {
                        width += z.Bounds.Right - p.Bounds.Right;
                    }
                    &lt;span class="kwrd"&gt;else&lt;/span&gt;
                    {
                        &lt;span class="rem"&gt;//sta a sinistra&lt;/span&gt;
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.Left &amp;lt; p.Bounds.Left)
                        {
                            width += Math.Abs(p.Bounds.Left - z.Bounds.Left);
                        }
                    }
                    &lt;span class="rem"&gt;//sta sopra&lt;/span&gt;
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.Top &amp;lt; p.Bounds.Top)
                    {
                        height += (Math.Abs(z.Bounds.Top) - Math.Abs(z.Bounds.Bottom));
                    }
                    &lt;span class="kwrd"&gt;else&lt;/span&gt;
                    {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (z.Bounds.Bottom &amp;gt; p.Bounds.Bottom)
                        {
                            height += z.Bounds.Bottom - p.Bounds.Bottom;
                        }
                    }

                }
            }&lt;/pre&gt;
&lt;p&gt;Basandomi sulla posizione dello schermo secondario, ho calcolato l’area dell’immagine composita e l’offset di posizionamento delle bitmap.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;            Bitmap ps = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(width, height);
            Graphics graphics = Graphics.FromImage(ps &lt;span class="kwrd"&gt;as&lt;/span&gt; Image);

            &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text = &lt;span class="str"&gt;""&lt;/span&gt;;
            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; Screen.AllScreens.Length; i++)
            {
                Screen x = Screen.AllScreens[i];
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"-------------------&amp;gt;{0}&amp;lt;-------------------------"&lt;/span&gt;, i)&lt;br /&gt;                    + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Top:"&lt;/span&gt; + x.Bounds.Top.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Bottom:"&lt;/span&gt; + x.Bounds.Bottom.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Left:"&lt;/span&gt; + x.Bounds.Left.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Right:"&lt;/span&gt; + x.Bounds.Right.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"X:"&lt;/span&gt; + x.Bounds.X.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Y:"&lt;/span&gt; + x.Bounds.Y.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Width:"&lt;/span&gt; + x.Bounds.Width.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="str"&gt;"Height:"&lt;/span&gt; + x.Bounds.Height.ToString() + Environment.NewLine;
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"-------------------&amp;lt;{0}&amp;gt;-------------------------"&lt;/span&gt;,&lt;br /&gt;                     i) + Environment.NewLine;
                graphics.CopyFromScreen(x.Bounds.X, x.Bounds.Y, x.Bounds.X + (Math.Abs(minx)),&lt;br /&gt;                      x.Bounds.Y + Math.Abs(miny), x.Bounds.Size);

                ps.Save(&lt;span class="str"&gt;@"c:\SingleImage.jpg"&lt;/span&gt;, ImageFormat.Jpeg);
                &lt;span class="kwrd"&gt;this&lt;/span&gt;.textBox1.Text += &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"DONE &amp;lt;{0}&amp;gt; "&lt;/span&gt;, i) + Environment.NewLine;
            }&lt;/pre&gt;
&lt;p&gt;Dopodiché compongo il bitmap sommando i due pezzi dello schermo. Sono certa c’è un modo migliore per farlo e ovviamente dovrete cambiare qualcosa per farlo funzionare con tre o più schermi. Se ci provate, fatemi sapere come avete risolto.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2ab1b8ee-a87d-4249-9e38-5be8ea8a5c93" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/capture+screen"&gt;capture screen&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;per scaricare il codice Loggarsi e andare in &lt;a target="_blank" href="http://www.dotnetwork.it/Contenuti/Risorse/tabid/63/Default.aspx"&gt;Area Risorse&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/597.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/01/17/catturare-lo-schermo-quando-vi-sono-schermi-multipli-da-c.aspx</guid>
            <pubDate>Mon, 17 Jan 2011 18:55:51 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/597.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/01/17/catturare-lo-schermo-quando-vi-sono-schermi-multipli-da-c.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/597.aspx</wfw:commentRss>
        </item>
        <item>
            <title>E&amp;rsquo; arrivata la Befana&amp;hellip;</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2011/01/06/ersquo-arrivata-la-befanahellip.aspx</link>
            <description>&lt;p&gt;Non avevo avuto modo di leggere la posta personale dallo scorso venerdì, e stamattina, aprendo finalmente outlook, ho trovato due messaggi di Alessandro Teglia e … sono caduta dalla sedia … &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/Windows-Live-Writer/6dd36c05c3ee_FA70/wlEmoticon-openmouthedsmile_2.png" /&gt;, si trattava infatti della comunicazione dell’assegnazione dell’MVP Award. Così la befana (o la zia Yeye se preferite) è arrivata fra gli MVP. E’ ovviamente qualcosa che ti fa sentire come se camminassi a dieci centimetri da terra, non è cosa da tutti I giorni ricevere un riconoscimento della propria professionalità noto a livello planetario. A questo punto mi verrebbe voglia di scrivere dei ringraziamenti da Oscar, ma credo sia ridicolo, pertanto ringrazio I responsabili del programma MVP di Microsoft per aver dato credito ai miei 23 anni di lavoro con tecnologie Microsoft, un lavoro che trovo appassionante ora come il primo giorno davanti ad un PC XT IBM, provando come funzionavano I comandi DOS seguendo il manuale operativo di base.&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/593.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2011/01/06/ersquo-arrivata-la-befanahellip.aspx</guid>
            <pubDate>Thu, 06 Jan 2011 17:51:08 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/593.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2011/01/06/ersquo-arrivata-la-befanahellip.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/593.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Usare le differenze fra Date per un countdown di fine anno</title>
            <category>WinForms</category>
            <link>http://community.dotnetwork.it/sabrina/archive/2010/12/30/usare-le-differenze-fra-date-per-un-countdown-di-fine.aspx</link>
            <description>&lt;p&gt;Una minuscola applicazione ispirata da una richiesta di Stefano Pranzo, per creare un applicazione che visualizza il conto alla rovescia per la fine dell’anno.&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/WindowsLiveWriter/UsareledifferenzefraDateperuncountdowndi_9F36/frmcountdown_2.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="frmcountdown" border="0" alt="frmcountdown" width="546" height="356" src="http://community.dotnetwork.it/images/community_dotnetwork_it/sabrina/WindowsLiveWriter/UsareledifferenzefraDateperuncountdowndi_9F36/frmcountdown_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Il risultato finale è questo, per ottenerlo creiamo una nuova applicazione Windows Forms, Rinominiamo Form1 FrmCountDown, e cambiamo le seguenti property:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;BackgroundImage –&amp;gt; Scegliamo una immagine cliccando sul bottone con i 3 puntini ed importiamola nelle resources di programma, quella che vedete l’ho trovata su bing digitando newyear nella ricerca immagini. &lt;/li&gt;
    &lt;li&gt;BackgroundImageLayout –&amp;gt; Stretch &lt;/li&gt;
    &lt;li&gt;FormBorderStyle –&amp;gt; None &lt;/li&gt;
    &lt;li&gt;KeyPreview –&amp;gt; True (questa ci serve per gestire il quit). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aggiungiamo alla form una label che chiamiamo lblCountdown e a cui diamo le seguenti proprietà:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;BackColor –&amp;gt; transparent &lt;/li&gt;
    &lt;li&gt;Font Name –&amp;gt; Lucida Calligraphy &lt;/li&gt;
    &lt;li&gt;Font Size –&amp;gt; 64 &lt;/li&gt;
    &lt;li&gt;Forecolor –&amp;gt; Gold &lt;/li&gt;
    &lt;li&gt;TextAlign –&amp;gt; MiddleCenter &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aggiungiamo alla form un button che chiamiamo btnClose e a cui diamo le seguenti proprietà:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;UseVisualStyleBackColor –&amp;gt; False &lt;/li&gt;
    &lt;li&gt;FlatStyle –&amp;gt; Flat &lt;/li&gt;
    &lt;li&gt;BackColor –&amp;gt; transparent &lt;/li&gt;
    &lt;li&gt;Font Name –&amp;gt; Lucida Calligraphy &lt;/li&gt;
    &lt;li&gt;Forecolor –&amp;gt; Gold &lt;/li&gt;
    &lt;li&gt;Text –&amp;gt; Close &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aggiungiamo alla form un timer che chiamiamo tmrCountdown.&lt;/p&gt;
&lt;p&gt;Implementiamo il codice dietro alla form:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; FrmCountDown()
        {
            InitializeComponent();
            tmrCountdown.Interval = 1000;
            tmrCountdown.Enabled = &lt;span class="kwrd"&gt;false&lt;/span&gt;;
        }&lt;/pre&gt;
&lt;p&gt;Nel costruttore settiamo l’intervallo del timer a 1 secondo (1000 millisecondi) e lo disattiviamo.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FrmCountDown_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            tmrCountdown.Start();
        }&lt;/pre&gt;
&lt;p&gt;Sull’evento Load della form attiviamo il timer.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnClose_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            Application.Exit();
        }&lt;/pre&gt;
&lt;p&gt;Sull’evento click del bottone Close implementiamo la chiusura applicazione.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FrmCountDown_KeyUp(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, KeyEventArgs e)
        {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.KeyCode == Keys.Escape)
            {
                Application.Exit();
            }
        }&lt;/pre&gt;
&lt;p&gt;Sulla  pressione del tasto Esc della tastiera facciamo lo stesso.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        DateTime mDtEnd = &lt;span class="kwrd"&gt;new&lt;/span&gt; DateTime(2011, 01, 01, 0, 0, 0);&lt;/pre&gt;
&lt;p&gt;Creiamo una variabile a livello di form che contiene la data finale del conto alla rovescia, quindi le 00:00:00 del primo gennaio.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; tmrCountdown_Tick(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            TimeSpan sp = mDtEnd.Subtract(DateTime.Now);
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.lblCountdown.Text = sp.TotalHours.ToString(&lt;span class="str"&gt;"###"&lt;/span&gt;) + &lt;span class="str"&gt;":"&lt;/span&gt; + &lt;br /&gt;                sp.Minutes.ToString(&lt;span class="str"&gt;"0#"&lt;/span&gt;) + &lt;span class="str"&gt;":"&lt;/span&gt; + sp.Seconds.ToString(&lt;span class="str"&gt;"0#"&lt;/span&gt;);
            Application.DoEvents();
        }&lt;/pre&gt;
&lt;p&gt;Infine, sull’evento Tick del timer andiamo ad aggiornare la nostra label  facendo una differenza fra la data attuale e la data finale e convertendo il dato in una stringa formattata. Come potete vedere abbiamo usato il metodo Subtract della classe DateTime e le property TotalHours, Minutes e Seconds del Timespan che rappresenta la differenza.&lt;/p&gt;
&lt;p&gt;Ed il nostro countdown di fine anno è pronto.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetwork.it/Contenuti/Risorse/tabid/63/Default.aspx"&gt;Il codice sorgente completo lo trovate in area risorse.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/587.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2010/12/30/usare-le-differenze-fra-date-per-un-countdown-di-fine.aspx</guid>
            <pubDate>Thu, 30 Dec 2010 10:18:27 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/587.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2010/12/30/usare-le-differenze-fra-date-per-un-countdown-di-fine.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/587.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
