<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4286655782640742058</id><updated>2012-02-23T07:37:51.832-08:00</updated><category term='Windows Phone'/><category term='Windows Mobile'/><category term='ALM'/><category term='WCF'/><category term='.NET Compact Framework'/><category term='Windows Embedded Compact'/><category term='V.Next'/><category term='XeDotNet'/><category term='tinyCLR.it'/><category term='TFS'/><category term='OData'/><category term='.NET Micro FW'/><category term='VS Tools'/><category term='Windows Azure'/><category term='Windows CE'/><category term='SQL Compact'/><category term='.NET Gadgeteer'/><category term='Sql'/><title type='text'>Blog di Vanini Mirco</title><subtitle type='html'>Appunti di viaggio nello sviluppo embedded &amp;amp; mobile</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7012075007070479531</id><published>2012-02-23T06:01:00.001-08:00</published><updated>2012-02-23T07:37:51.868-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>TinyCLR.it a Hack Reality 2012</title><content type='html'>&lt;p&gt;Anche se con qualche giorno di ritardo volevo ringraziare tutti per la splendida giornata trascorsa in quel di Bologna all’hackathon “&lt;a href="http://www.whymca.org/evento/whymca-hack-reality-bologna-18-02-2012"&gt;Hack Reality 2012&lt;/a&gt;” organizzato dai ragazzi di &lt;a href="http://www.whymca.org"&gt;Whymca&lt;/a&gt;.&amp;nbsp; Il team composto da Lorenzo Maiorfi, Gianluca Ruta, Mario Vernari ed il sottoscritto ha fatto la sua parte per la buona riuscita dell’evento. Come prima uscita di &lt;a href="http://www.tinyclr.it/"&gt;TinyCLR.it&lt;/a&gt; mi ritengo soddisfatto sia per l’esperienza che per la curiosità ed i contatti che abbiamo avuto. L’occasione è stata sicuramente un’ottima palestra per lo scambio di idee, esperienze ed il confronto con le più disparate tecnologie. In questo &lt;a href="http://www.tinyclr.it/qualche-foto-di-tinyclrit-a-hack-reality-2012.aspx"&gt;post&lt;/a&gt; potete trovare alcune foto dell’evento. Esperienza sicuramente da ripetere!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7012075007070479531?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7012075007070479531/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/02/tinyclrit-hack-reality-2012.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7012075007070479531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7012075007070479531'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/02/tinyclrit-hack-reality-2012.html' title='TinyCLR.it a Hack Reality 2012'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5276185288086956986</id><published>2012-02-21T15:00:00.001-08:00</published><updated>2012-02-21T15:00:34.064-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Windows Virtual PC &amp; Microsoft Device Emulator</title><content type='html'>&lt;p&gt;In questi giorni ho ripreso in mano un progetto basato su Windows Mobile 6.x e con mia sorpresa ho scoperto che l’emulatore di WM6 non riusciva più a riconoscere la scheda di rete (NE2000 PCMCIA). L’errore riportato era il seguente:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;The required Virtual Machine Network Driver could not be found. Make sure that Virtual PC 2007 is installed. You can install Virtual PC 2007 from &lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/?linkid=46859"&gt;&lt;em&gt;http://go.microsoft.com/fwlink/?linkid=46859&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Pensando un po' ho fatto mente locale ricordando che l’installazione di Windows Virtual PC richiedeva la disinstallazione di Virtual PC2007. Morale: l’emulatore non funziona con i nuovi drivers di&amp;nbsp; Windows Virtual PC. Cercando in rete ho trovato diverse soluzioni al caso molto simili ma quella che mi ha risolto il problema è la seguente:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=28C97D22-6EB8-4A09-A7F7-F6C7A1F000B5&amp;amp;displaylang=en"&gt;Virtual PC 2007 SP1&lt;/a&gt;  &lt;li&gt;Rinominare l’eseguibile &lt;strong&gt;setup.exe&lt;/strong&gt; in &lt;strong&gt;vpc.exe&lt;/strong&gt;  &lt;li&gt;Aprire una shell dos ed eseguire il comando &lt;strong&gt;vpc.exe /c&lt;/strong&gt;  &lt;li&gt;Questo comando estrae il file MSI nel folder &lt;strong&gt;%temp%&lt;/strong&gt;  &lt;li&gt;Posizionarsi nel folder ed eseguire il comando &lt;b&gt;msiexec /a Virtual_PC_2007_Install.msi /qb TARGETDIR=c:\vpc&lt;/b&gt;  &lt;li&gt;Questo estrae i files del MSI nel folder c:\vpc  &lt;li&gt;Aprire “Centro connessioni di rete e condivisione” e selezionare “Modifica Impostazioni scheda”&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1p0o-B6TUHJg_sRz_fJIO6o4aUqYxapZ06yS1OXZfyBfLztoMRBC4uuhLn3w4-hZtsUIv0Iw-yueRKgVPyf4w9tA/step1.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Selezionare la scheda di rete con cui ci si connette ad internet e aprire le proprietà della stessa  &lt;li&gt;Premere il pulsante “Installa”&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pSZ2C6ehV7bmI0Z8_SfodG3_uW9atq8gm6Fj1hPRJoE781dpfUIZtC80PdQQOhRpg2nyxxTbZfm3L4ryZkypDuw/step2.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Selezionare “Servizio”&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1p0o-B6TUHJg-g6XZqYOkWaibid5Ja_fKSN0ao_kCLmfusx6sF21hvsJceNMQ-pnUQ1DD_i3ylpr6x7f-TAk4GqA/step3.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Selezionare “Disco Driver…”&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pxS53t-9I-xafQT5OYySU4iOu0bhC2U96on_Als4aIqkq23vyvMEiG-cRQAqiMv-O24AqCVqHwlioeEwd9p8keQ/step4.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Navigare in &lt;strong&gt;C:\vpc\Program Files\Microsoft Virtual PC\Utility\VMNetSrv\ &lt;/strong&gt;per i sistemi x86 e in &lt;strong&gt;C:\vpc\Program Files\Microsoft Virtual PC\Utility\VMNetSrv\x64&lt;/strong&gt;&amp;nbsp; per i sistemi a x64  &lt;li&gt;Selezionare il file “VMNetSrv.inf”  &lt;li&gt;Selezionare &lt;strong&gt;Virtual Machine Network Services &lt;/strong&gt;e confermare&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pmPV8cICaVBZZolkPWichJT5T4ZfzMqfTUpwjTMLsuTGLvyuacp1aiPcE_rrw1jW3-kNk9cS8PejW7P7QUhS_ZA/step5.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;A questo punto il driver è installato e collegato alla scheda selezionata, se si vuole installare lo stesso driver su più schede si deve ripetere la procedura dal punto 8 per ogni singola scheda.&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pxS53t-9I-xYBWoTN7epmPPOg5G7NaE5020ErP2637blr9ce91U7hUt59MsQHsNo2s_KVlLNNmhusAq4o6h1oeA/step6.png?psid=1"&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5276185288086956986?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5276185288086956986/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/02/windows-virtual-pc-microsoft-device.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5276185288086956986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5276185288086956986'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/02/windows-virtual-pc-microsoft-device.html' title='Windows Virtual PC &amp;amp; Microsoft Device Emulator'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-3510751159119251993</id><published>2012-02-16T15:27:00.001-08:00</published><updated>2012-02-16T15:28:03.976-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>Hack Reality, ci siamo quasi</title><content type='html'>&lt;p&gt;Dopo il rinvio di due settimane fa causa abbondante nevicata e conseguenti disagi, sabato 18 febbraio si terrà a Bologna l’incontro di &lt;a href="http://www.whymca.org/"&gt;Hack Reality&lt;/a&gt;, l’evento di hackathon targato WhyMCA orientato all'interazione tra mobile e realtà. Io sarò presente con gli altri colleghi di &lt;a href="http://www.tinyclr.it"&gt;TinyCLR.it&lt;/a&gt; con cui presenteremo dei brevi workshop inerenti il mondo .NET MicroFW, sicuramente ci sarà da divertirsi! Vi aspetto numerosi.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-3510751159119251993?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/3510751159119251993/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/02/hack-reality-ci-siamo-quasi.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3510751159119251993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3510751159119251993'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/02/hack-reality-ci-siamo-quasi.html' title='Hack Reality, ci siamo quasi'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-2283690638677186332</id><published>2012-02-09T14:46:00.001-08:00</published><updated>2012-02-09T14:46:49.483-08:00</updated><title type='text'>Windows 8 for ARM</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/b8/archive/2012/02/09/building-windows-for-the-arm-processor-architecture.aspx"&gt;Post&lt;/a&gt; assolutamente da non perdere ! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-2283690638677186332?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/2283690638677186332/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/02/windows-8-for-arm.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2283690638677186332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2283690638677186332'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/02/windows-8-for-arm.html' title='Windows 8 for ARM'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-2170682831320323408</id><published>2012-01-25T14:39:00.001-08:00</published><updated>2012-01-25T14:39:35.484-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>TinyCLR.it a HACK REALITY</title><content type='html'>&lt;p&gt;Il prossimo 4 febbraio si terrà a Bologna &lt;a href="http://www.whymca.org/evento/whymca-hack-reality-bologna-04-02-2012"&gt;“Hack Reality”&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;, il nuovo hackathon targato WhyMCA, orientato all'interazione tra mobile e realtà. Fra le varie tecnologie utilizzabili ci sarà spazio anche per .NET Micro Framework quindi per gli appassionati del genere sarà una bella occasione per mettersi alla prova e creare qualcosa di originale sia con il .NET MF che con le altre interessanti tecnologie disponibili. Ci vediamo a Bologna per “interagire con la realtà”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-2170682831320323408?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/2170682831320323408/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/01/tinyclrit-hack-reality.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2170682831320323408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2170682831320323408'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/01/tinyclrit-hack-reality.html' title='TinyCLR.it a HACK REALITY'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-6301341419359788627</id><published>2012-01-25T13:59:00.001-08:00</published><updated>2012-01-25T13:59:13.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>.NETCF: ResolveAssemblyReferences warnings</title><content type='html'>&lt;p&gt;Durante lo sviluppo di un progetto per .NET CF mi è capitato di incontrare diversi warning del tipo:&lt;/p&gt; &lt;blockquote&gt; &lt;p align="left"&gt;&lt;em&gt;ResolveAssemblyReferences: Consider app.config remapping of assembly "System.Windows.Forms, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" from Version "2.0.0.0" [] to Version "3.5.0.0" [C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\ WindowsCE\System.Windows.Forms.dll] to solve conflict and get rid of warning.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="left"&gt;Questo avviso viene visualizzato quando il compilatore ha caricato le librerie BCL del .NET Compact Framework 3.5, ma i metadati contenuti nei assembly referenziati fanno riferimento alle librerie BCL del .NET Compact Framework 2.0.&lt;/p&gt; &lt;p align="left"&gt;Per rimuovere questi warning è possibile aggiungere un file app.config al progetto e reindirizzare le associazioni degli assembly della 2.0 a gli equivalenti della 3.5. Di seguito è riportato un esempio di XML per reindirizzare la versione 2.0 di System.dll alla versione 3.5:&lt;/p&gt; &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;lt;?xml version=&lt;span style="color: #006080"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color: #006080"&gt;"utf-8"&lt;/span&gt; ?&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;lt;configuration&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;  &amp;lt;runtime&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &amp;lt;assemblybinding xmlns=&lt;span style="color: #006080"&gt;"urn:schemas-microsoft-com:asm.v1"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &amp;lt;dependentassembly&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &amp;lt;assemblyidentity name=&lt;span style="color: #006080"&gt;"System"&lt;/span&gt; culture=&lt;span style="color: #006080"&gt;"neutral"&lt;/span&gt; publickeytoken=&lt;span style="color: #006080"&gt;"969db8053d3322ac"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &amp;lt;bindingredirect  newVersion=&lt;span style="color: #006080"&gt;"3.5.0.0"&lt;/span&gt; oldVersion=&lt;span style="color: #006080"&gt;"2.0.0.0"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &amp;lt;/dependentassembly&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &amp;lt;/assemblybinding&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;  &amp;lt;/runtime&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Sarà necessario aggiungere un elemento &lt;b&gt;dependentassembly&lt;/b&gt; per ognuno dei warning ResolveAssemblyReferences che si ricevono dal compilatore.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In fine, assicurarsi che la proprietà &lt;b&gt;Build Action&lt;/b&gt; del file app.config sia impostata su &lt;b&gt;Content &lt;/b&gt;e la proprietà di &lt;b&gt;Copy To Output Directory &lt;/b&gt;sia impostata su &lt;b&gt;Only if newer&lt;/b&gt;.&amp;nbsp; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-6301341419359788627?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/6301341419359788627/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/01/netcf-resolveassemblyreferences.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6301341419359788627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6301341419359788627'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/01/netcf-resolveassemblyreferences.html' title='.NETCF: ResolveAssemblyReferences warnings'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5600924458453464765</id><published>2012-01-11T14:01:00.001-08:00</published><updated>2012-01-25T04:03:08.531-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>XeDotNet – Prossimi meeting</title><content type='html'>&lt;p&gt;Anno nuovo, nuovo calendario di sessioni per il primo semestre 2012 di &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt;. &lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20120210"&gt;10/02/2012 - HTML5 e lo sviluppo mobile&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Andrea Dottor - ASP.NET e lo sviluppo mobile?  &lt;li&gt;Davide Senatore - Packaging HTML5 application with PhoneGap&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20120309"&gt;09/03/2012 - Sviluppo client side&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Andrea Boschin - What's new in Silverlight 5.0  &lt;li&gt;Andrea Dottor - Il mondo è sempre più client. ASP.NET e lo sviluppo Client Side&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20120330"&gt;30/03/2012 - Real world experience&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Cristiano Simionato - Ma quanto costa Windows Azure?  &lt;li&gt;Mirco Vanini - REST &amp;amp; .NET Micro FW - A Real Case&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20120504"&gt;04/05/2012 - Uno sguardo a futuro&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Davide Vernole - Visual Studio vNext - Application Lifecycle Management  &lt;li&gt;Andrea Boschin - Sviluppare applicazioni Metro con Windows 8 e WinRT&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20120615"&gt;15/06/2012 - Playing with gadgets&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Mirco Vanini - Are you a Gadgeteer?  &lt;li&gt;Davide Vernole - Playing with Team Foundation Server&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In questo semestre avrò il piacere di tenere due sessioni su argomenti ed esperienze che mi vedono impegnato in prima persona sia nell’ambito lavorativo sia nell’ambito di community. La prima &lt;a href="http://www.xedotnet.org/Home/Meeting/20120406"&gt;sessione&lt;/a&gt; sarà basata su un caso reale mentre la &lt;a href="http://www.xedotnet.org/Home/Meeting/20120601"&gt;seconda&lt;/a&gt; riguarderò il &lt;a href="http://www.netmf.com/gadgeteer/"&gt;.NET Gadgeteer&lt;/a&gt;.&lt;/p&gt; &lt;ul&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5600924458453464765?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5600924458453464765/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/01/xedotnet-prossimi-meeting.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5600924458453464765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5600924458453464765'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/01/xedotnet-prossimi-meeting.html' title='XeDotNet – Prossimi meeting'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1828549438240517874</id><published>2012-01-07T01:49:00.001-08:00</published><updated>2012-01-07T01:49:01.626-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>NETMF Extension Methods</title><content type='html'>&lt;p&gt;Una delle caratteristiche più accattivanti di C# sono gli extension methods, peccato che per il .NET MicroFW non siano disponibili. Infatti tentando di utilizzarli si ottiene il seguente errore:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Cannot define a new extension method because the compiler required type 'System.Runtime.CompilerServices.ExtensionAttribute' cannot be found. Are you missing a reference to System.Core.dll?&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Cercando una possibile soluzione ho trovato questo &lt;a href="http://www.tinyclr.com/forum/6/1258/"&gt;post&lt;/a&gt; che riporta la soluzione al problema:&lt;/p&gt; &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.SPOT;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.SPOT.Hardware;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Required for NETMF to recognized extension methods&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; System.Runtime.CompilerServices&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ExtensionAttribute : Attribute { }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Extension methods for byte[] - typically would be put in a separate file&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ByteArrayExtensions&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// Method to create a string from UTF8-encoded bytes - be careful about null "this" being passed in&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ToStringFromUTF8(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] bytes)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; == bytes ? String.Empty : &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; String(System.Text.Encoding.UTF8.GetChars(bytes));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Come si vede dal codice riportato il trucco è definire l’attributo ExtensionAttribute. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1828549438240517874?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1828549438240517874/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2012/01/netmf-extension-methods.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1828549438240517874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1828549438240517874'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2012/01/netmf-extension-methods.html' title='NETMF Extension Methods'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-478471391756317206</id><published>2011-12-09T03:39:00.001-08:00</published><updated>2011-12-09T03:39:28.241-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>TinyCLR.it è finalmente online!</title><content type='html'>&lt;p&gt;Come vi avevo preannunciato qualche settimana fa siamo finalmente &lt;a href="http://www.tinyclr.it"&gt;online&lt;/a&gt;. Nei prossimi giorni aggiungeremo vari contenuti che spero cattureranno sempre di più la vostra attenzione. Volevo ringraziare in modo particolare &lt;a href="http://www.innovactive.it/"&gt;Lorenzo&lt;/a&gt; per lo sforzo che ha dedicato per la messa online del sito.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-478471391756317206?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/478471391756317206/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/12/tinyclrit-e-finalmente-online.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/478471391756317206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/478471391756317206'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/12/tinyclrit-e-finalmente-online.html' title='TinyCLR.it è finalmente online!'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4012485787785472876</id><published>2011-12-06T05:09:00.001-08:00</published><updated>2011-12-06T05:09:46.337-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>Slide della sessione: “Visual Studio Architect Tools”</title><content type='html'>&lt;p&gt;Ecco disponibile al download le &lt;a href="https://skydrive.live.com/embed?cid=AFD1BDC9B805CF1C&amp;amp;resid=AFD1BDC9B805CF1C%21275&amp;amp;authkey=AJeDU391C7CVm5E"&gt;slide&lt;/a&gt; del &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; community meeting che ho tenuto il 2 Dicembre 2011 dal titolo &lt;strong&gt;Visual Studio Architect Tools&lt;/strong&gt; inerente l’utilizzo dei Layer Diagram.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;“In Visual Studio Ultimate è possibile utilizzare un Layer Diagram per visualizzare l'architettura logica del sistema. Un Layer Diagram organizza gli elementi fisici nel sistema in gruppi logici e astratti chiamati Layer. Questi Layer consentono di identificare, descrivere e differenziare i tipi di attività eseguite dagli elementi. Ogni Layer può contenere anche livelli aggiuntivi o sottolivelli, che descrivono specifiche attività più piccole eseguite dai gruppi discreti di elementi. Utilizzando un Layer Diagram è possibile eseguire le attività seguenti: Comunicare l'architettura logica esistente o desiderata del sistema; Individuare i conflitti tra il codice esistente e l'architettura desiderata; Visualizzare l'impatto delle modifiche sull'architettura desiderata quando si esegue il refactoring, l'aggiornamento o l'evoluzione del sistema; Rinforzare l'architettura desiderata durante lo sviluppo e la manutenzione del codice includendo la convalida con le operazioni di archiviazione e compilazione. Durante questa sessione vedremo come sia possibile utilizzare questa tipologia di diagramma per migliorare la creazione e la manutenzione delle nostre applicazioni.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Volevo porgere un ringraziamento a tutte le numerose persone presenti al meeting, allo staff di &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; ed in particolare a &lt;a href="http://www.silverlightplayground.org/"&gt;Andrea Boschin&lt;/a&gt; e a &lt;a href="http://blog.knodev.com/"&gt;Davide Vernole&lt;/a&gt;, con cui ho condiviso la sessione, per il supporto tecnico, morale ed organizzativo della sessione e per l’opportunità che mi è stata data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4012485787785472876?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4012485787785472876/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/12/slide-della-sessione-visual-studio.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4012485787785472876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4012485787785472876'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/12/slide-della-sessione-visual-studio.html' title='Slide della sessione: “Visual Studio Architect Tools”'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-2349102966813516578</id><published>2011-11-29T12:45:00.001-08:00</published><updated>2011-11-29T12:45:49.508-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>XeDotNet Meeting - Visual Studio Architect Tools</title><content type='html'>&lt;p&gt;Volevo segnalarvi il prossimo meeting di &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; che si terrà il 2 dicembre 2011&lt;/p&gt; &lt;p&gt;&lt;strong&gt;UML con Visual Studio 2010&lt;/strong&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;Speaker: &lt;a href="http://blog.knodev.com"&gt;Davide Vernole&lt;/a&gt; &lt;p&gt;Una corretta progettazione è alla base di un applicazione in grado di dare valore al cliente. Quando ci troviamo in questa fase del ciclo di vita di un'applicazione la domanda che spesso ci si pone è: quale notazione utilizzare? Visual Studio 2010 ci propone una possibile risposta indicando in UML la scelta standard da seguire. Sebbene l'implementazione di Visual Studio 2010 non sia UML al 100% la soluzione offerta aiuta a standardizzare l'approccio progettuale di uno o più team di sviluppo. La sessione si pone l'obiettivo di dimostrare queste funzionalità simulando l'intero processo di progettazione. &lt;p&gt;&lt;strong&gt;Layer Diagram con Visual Studio 2010&lt;/strong&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;Speaker: &lt;a href="http://mircovanini.blogspot.com/"&gt;Mirco Vanini&lt;/a&gt;  &lt;p&gt;In Visual Studio Ultimate è possibile utilizzare un Layer Diagram per visualizzare l'architettura logica del sistema. Un Layer Diagram organizza gli elementi fisici nel sistema in gruppi logici e astratti chiamati Layer. Questi Layer consentono di identificare, descrivere e differenziare i tipi di attività eseguite dagli elementi. Ogni Layer può contenere anche livelli aggiuntivi o sottolivelli, che descrivono specifiche attività più piccole eseguite dai gruppi discreti di elementi. Utilizzando un Layer Diagram è possibile eseguire le attività seguenti: Comunicare l'architettura logica esistente o desiderata del sistema; Individuare i conflitti tra il codice esistente e l'architettura desiderata; Visualizzare l'impatto delle modifiche sull'architettura desiderata quando si esegue il refactoring, l'aggiornamento o l'evoluzione del sistema; Rinforzare l'architettura desiderata durante lo sviluppo e la manutenzione del codice includendo la convalida con le operazioni di archiviazione e compilazione. Durante questa sessione vedremo come sia possibile utilizzare questa tipologia di diagramma per migliorare la creazione e la manutenzione delle nostre applicazioni. &lt;p&gt;&lt;strong&gt;Venerdì 2/12/2011 ore 19:30&lt;/strong&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;Novotel Castellana&lt;br&gt;Via Alfredo Ceccherini 21 - Venezia Mestre &lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;strong&gt;per iscrizioni: &lt;/strong&gt;&lt;/b&gt;&lt;a href="http://communitydevtool.com/public/frmdetailevent.aspx?eventid=1103MOURGMCCUBTENHFESH"&gt;&lt;strong&gt;clicca qui&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-2349102966813516578?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/2349102966813516578/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/xedotnet-meeting-visual-studio.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2349102966813516578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2349102966813516578'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/xedotnet-meeting-visual-studio.html' title='XeDotNet Meeting - Visual Studio Architect Tools'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-3473215528406215192</id><published>2011-11-27T03:12:00.001-08:00</published><updated>2011-11-27T03:12:30.986-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>Gestione prenotazioni con .NET Micro FW</title><content type='html'>&lt;p&gt;Come vi avevo anticipato nei post precedenti vi anticipo qualche contenuto che sarà pubblicato&amp;nbsp; sul sito TinyCLR.it.&lt;/p&gt; &lt;h2&gt;Introduzione&lt;/h2&gt; &lt;p&gt;Durante la mia attività di sviluppatore mi sono imbattuto in svariate problematiche che ho risolto utilizzando le varie tecnologie presenti sul mercato. Non sempre queste tecnologie risolvevano in modo “pulito” tutti i punti di queste problematiche ma come si dice di necessità virtù!  &lt;p&gt;Come tutti mi è capitato di riaffrontare le stesse problematiche a distanza di tempo e confrontare e/o rivedere le scelte tecnologiche fatte. In questo caso, che andrò ad illustrare, vi porto la mia esperienza di sviluppo di un sistema di gestione prenotazioni basato su dispositivi con il .NET MF 3.0 e la sua rivisitazione con il .NET FW 4.1 con le nuove funzionalità in esso contenute.  &lt;h5&gt;Richieste funzionali&lt;/h5&gt; &lt;p&gt;Come in tutti i progetti si parte dalle richieste funzionali che il software deve soddisfare. Di seguito sono esposte le principali, in dettaglio:  &lt;p&gt;Si richiede lo sviluppo di un sistema di gestione prenotazione code per punto vendita. Il sistema deve prevedere:  &lt;ul&gt; &lt;li&gt;un pulsante di prenotazione  &lt;li&gt;la stampa della prenotazione  &lt;li&gt;un sistema di verifica della stessa prenotazione  &lt;li&gt;un sistema di evasione della prenotazione  &lt;li&gt;un sistema di consultazione dello stato coda  &lt;li&gt;un sistema di notifica avanzamento coda  &lt;li&gt;…&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;La rappresentazione dei moduli principali della soluzione può essere riassunto nel seguente schema:&lt;/p&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pI80OsH8G8g_BAdT5XBqVc9T7ufqekm_VZb4QMlkjLiR_9laVeQirjsZcimFUx2oWNPG1AzHQQDG2rH7bQ_bHQg/Wcf_MicroFW_Image01.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;Come si può notare dallo schema precedente la soluzione è suddivisa in varie parti, in dettaglio:  &lt;ul&gt; &lt;li&gt;Un servizio di back-end che ospita tutta la logica delle prenotazioni, la loro persistenza, la logica delle notifiche, ecc.  &lt;li&gt;Un modulo di gestione della richiesta di prenotazione.  &lt;li&gt;Un modulo di gestione dell’emissione del ticket di prenotazione.  &lt;li&gt;Un modulo di gestione interrogazione e/o verifica dei ticket di prenotazione.  &lt;li&gt;Un modulo di gestione esecuzione prenotazione.  &lt;li&gt;Un modulo di gestione di esecuzione notifica verso i vari dispositivi informativi.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In tutti i moduli in cui vi è un’iterazione con dispositivi esterni (stampanti, lettori di barcode, display, ecc.) si è scelto di adottare dei dispositivi con .NET FW.  &lt;p&gt;I vari moduli basati su dispositivo MF, sono stati elencati come moduli separati per semplicità, ma nella realtà sono “racchiusi” in un’unica procedura.  &lt;p&gt;Questa soluzione, nella sua prima versione, è stata sviluppata utilizzando VS2008 e .NET MF 3.0. Per la sua rivisitazione è stato poi adottato VS2010 e .NET MF 4.1. Oltre all’ambiente di sviluppo sono state cambiate molte parti della stessa cercando di utilizzare al meglio tutto quello che il nuovo .NET Micro FW metteva a disposizione con la nuova versione.  &lt;p&gt;In questo articolo mi soffermerò soprattutto sul modo con cui i due mondi, servizio di back-end e dispositivi MF, si parlano e come questo sia evoluto con il cambio del MF.  &lt;p&gt;I sorgenti allegati al presente sono divisi in due esempi, sample1 utilizza una comunicazione basata su socket mentre sample2 utilizza WCF per la parte di comunicazione. Per questi esempi è stato utilizzato VS2010 e .NE MF 4.1 in entrambe le sezioni, simulando nel primo caso la soluzione adottata con il FW 3.0.  &lt;p&gt;&lt;i&gt;Questa opzione è stata adottata per non costringere a chi utilizza il codice di avere installato e configurato entrambi gli ambienti.&lt;/i&gt;  &lt;h5&gt;Codice Allegato&lt;/h5&gt; &lt;p&gt;Allegato all’articolo è fornito il &lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WCF%5E_MicroFW/WCF%5E_MicroFW%5E_Demos.zip"&gt;codice sorgente&lt;/a&gt; di esempio trattato nei vari capitoli seguenti. La solution di VS 2010 è composta dai seguenti moduli:  &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pu79nXfhqkGxjONjHZR5eyAkhvZStcO6QVOULM0T2V7M6xosxu_YFMbQmy7DTBxTp9SxBbWyzBHu_Fz1YtylEug/Wcf_MicroFW_Image02.png?psid=1"&gt;  &lt;p&gt;&amp;nbsp; &lt;ul&gt; &lt;li&gt;Esempi con MF 3.0  &lt;ul&gt; &lt;li&gt;&lt;i&gt;Xe.Sample1.Server&lt;/i&gt;: progetto windows form che racchiude le funzionalità di back-end del servizio di gestione prenotazioni.  &lt;li&gt;&lt;i&gt;Xe.Sample1.MicroDevice&lt;/i&gt;: progetto device di tipo console che racchiude le funzionalità di consumo del servizio di gestione prenotazioni.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Esempi con MF 4.1  &lt;ul&gt; &lt;li&gt;&lt;i&gt;Xe.Sample1.FakeService:&lt;/i&gt; progetto window form per la generazione di un servizio fake.  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationMarker: &lt;/i&gt;progetto device di tipo windows che racchiude le funzionalità di consumo di richiesta prenotazione.&lt;i&gt;&lt;/i&gt;  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationMicroProxy: &lt;/i&gt;progetto device i tipo class library che racchiude il proxy verso il servizio di gestione prenotazioni&lt;i&gt;&lt;/i&gt;  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationService:&lt;/i&gt; progetto windows form che racchiude le funzionalià del servizio di gestione prenotazioni.&lt;i&gt;&lt;/i&gt;  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationTicket: &lt;/i&gt;progetto device di tipo windows che racchiude le funzionalità di stampa della prenotazione.&lt;i&gt;&lt;/i&gt;  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationTicketClient:&lt;/i&gt; progetto di tipo windows form che racchiude le funzionalità di richiesta stampa della prenotazione.&lt;i&gt;&lt;/i&gt;  &lt;li&gt;&lt;i&gt;Xe.Sample2.ReservationTicketProxy:&lt;/i&gt; progetto di tipo class library che contiene il proxy verso il servizio di gestione della stampa del ticket prenotazione&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;i&gt;P.S.: Per ovvi motivi commerciali e di chiarezza il codice illustrato ed allegato a questo articolo è solo una parte riadattata della soluzione realizzata.&lt;/i&gt;&lt;/p&gt; &lt;h5&gt;Esempio con MF 3.0&lt;/h5&gt; &lt;p&gt;L’esempi che utilizza il MF 3.0 è composto dalle seguenti parti:  &lt;ul&gt; &lt;li&gt;Reservation Service (.NET WinForm)  &lt;ul&gt; &lt;li&gt;TcpCommandListener  &lt;li&gt;MicroProtocol  &lt;li&gt;ThreadPooling&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Reservation Marker (.NET Micro FW Console)  &lt;ul&gt; &lt;li&gt;TcpCommandListener  &lt;li&gt;DeviceManager  &lt;li&gt;MicroProtocol&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Reservation Service(Xe.Sample1.Server)&lt;/h5&gt; &lt;p&gt;Le funzionalità base del servizio di prenotazioni sono le seguenti:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Richiesta di una nuova prenotazione su una particolare coda (AskNewQueueReservation)  &lt;li&gt;Richiedi lo stato di una particolare coda (GetCurrentQueueReservation  &lt;li&gt;Esegui la prenotazione corrente per una determinata coda (ExecCurrentQueueReservation)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Queste funzionalità del servizio sono esposte ai vari dispositivi utilizzando un protocollo basato su socket nella versione 3.0 del .NET MF. Il protocollo che viene illustrato è semplice ed epurato di tutte le complessità e controlli che un protocollo deve avere. Le richieste verso il servizio di prenotazioni sono gestite tramite un listener socket che ascolta e cattura le richieste provenienti dai vari dispositivi&lt;/p&gt; &lt;p&gt;Le classi principali di questo modulo sono:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;i&gt;QueueManager&lt;/i&gt;: classe di gestione prenotazioni  &lt;li&gt;&lt;i&gt;TcpCommandListener&lt;/i&gt;: classe di gestione richieste / risposte tramite socket  &lt;li&gt;&lt;i&gt;MicroProtocol: &lt;/i&gt;classe di gestione protocollo da e per i device&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Reservation Marker(Xe.Sample1.MicroDevice)&lt;/h5&gt; &lt;p&gt;Questo modulo è sviluppato utilizzando .NET MF e costituisce il consumatore del servizio di prenotazione precedentemente illustrato. Trami questa modulo è possibile richiedere le seguenti azioni:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Eseguire una nuova prenotazione.  &lt;li&gt;Richiedere lo stato di una specifica coda.  &lt;li&gt;Eseguire la prenotazione corrente.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Il modulo utilizza una comunicazione basata su socket e su un protocollo proprietario. Questo protocollo ovviamente è condiviso con la parte di back-end.&lt;/p&gt; &lt;p&gt;Le classi principali di questo modulo sono:  &lt;ul&gt; &lt;li&gt;&lt;i&gt;DeviceManager&lt;/i&gt;: classe di gestione del device  &lt;li&gt;&lt;i&gt;TcpCommandListener&lt;/i&gt;: classe di gestione richieste / risposte tramite socket  &lt;li&gt;&lt;i&gt;MicroProtocol: &lt;/i&gt;classe di gestione protocollo da e per il serivzio di back-end&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Considerazioni Sample1&lt;/h5&gt; &lt;p&gt;Se si osserva il codice allegato si potrà notare la complessità nella comunicazione tra dispositivo e server di back-end. Tale complessità è insita nella tecnologia utilizzata, i socket sono sempre la strada più performante ma come tutte le cose ha un costo, la relativa complessità di implementazione ma soprattutto la sua manutenzione. Ogni volta che doppiamo modificare e/o estendere il protocollo di comunicazione per nuove funzionalità il lavoro da fare non è poco. Il .NET MF 3.0 offre i DPWS, non certo facili da implementare ma soprattutto non supportati nella versione 3.5 del .NET FW lato desktop. Oltre a questo il server e i dispositivi devono conoscersi, in altre parole il dispositivo deve conoscere l’indirizzo IP e la relativa porta a cui il servizio risponde, viceversa anche il server deve conoscere l’indirizzo IP e la relativa porta del dispositivo a cui il servizio deve rispedire le risposte. Per evitare questo si posso implementare sistemi di identificazione o di auto censimento, ma come dicevo precedentemente, poi bisogna anche mantenerli e/o estenderli.&lt;/p&gt; &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt; MicroProtocol.ProtocolType.AskNewQueueReservation:&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    AddMessage2Trace(&lt;span style="color: #006080"&gt;"Device -&amp;gt; AskNewRQueueeservation"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    ret = MicroProtocol.ReturnOkToken;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    ThreadPool.QueueUserWorkItem(state =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        var tmp = state &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; MicroProtocol;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        var resp = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MicroProtocol(MicroProtocol.ProtocolType.AskNewQueueReservationResponse,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                     Queues.AskNewQueueReservation(tmp.Param).ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                    &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        CmdListener.SendCommand(DeviceIpToken,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                DeviceIpPortToken,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                MicroProtocol.Serialize(resp));                    &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }, cmd);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Con l’uscita del .NET MF 4.1 e soprattutto con l’uscita del .NET FW 4.0 lato desktop le cose sono cambiate. In questa versione il MF supporta la versione 1.1 di DPSW compatibile con la versione 4.0 di WCF. Utilizzando il nuovo binding (ws2007HttpBinding) è possibile consumare servizi WCF direttamente dal dispositivo MF e viceversa, il dispositivo MF può esporre dei servizi consumabili tramite un client WCF. &lt;br /&gt;&lt;p&gt;Quest’ultima affermazione cambia radicalmente il possibile approccio per l’implementazione della comunicazione tra il servizio ed il dispositivo MF. Per questo motivo, e per il naturale evoluzione delle cose, l’applicazione è stata rivista adottando le ultime tecnologie disponibili. &lt;br /&gt;&lt;h5&gt;Esempio con MF 4.1&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;L’esempi che utilizza il MF 4.1 è composto dalle seguenti parti: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Reservation Service (.NET WinForm) &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;WCF Service [service discoverable over UDP multicast]&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Reservation Marker (.NET Micro WinApp) &lt;br /&gt;&lt;li&gt;Reservation MicroProxy (.NET Micro Class Library) &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Discovery [send UDP request to the DPWS multicast address]&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Reservation Ticket (.NET Micro WinApp) &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;DSPW Service&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Reservation Ticket Proxy (.NET Micro Class Library) &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Discovery [client discovery]&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Reservation Ticket Client (.NET WinForm)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h5&gt;Reservation Service(Xe.Sample2.ReservationService)&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Le funzionalità esposte dal servizio sono le stesse del modulo precedente. Quello che cambia in questo caso è come vengono esposte tali funzionalità. Infatti in questo caso le stesse sono erogate tramite un servizio WCF. La peculiarità di questo servizio è la possibilità dello stesso di essere individuato dai device tramite il multicast UDP. La creazione e la configurazione di questa modalità sono espresse nel codice della windows form che funge da host del servizio WCF.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Service != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; Service.State == CommunicationState.Opened)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    Service.Close();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Uri baseAddress = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080"&gt;"http://"&lt;/span&gt; + &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                          &lt;span style="color: #006080"&gt;"192.168.1.33"&lt;/span&gt; + &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                          &lt;span style="color: #006080"&gt;":8084/Xe.Sample2.ReservationService/ReservationService/"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Service = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceHost(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ReservationService), &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                          baseAddress);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;ServiceEndpoint wsEndpoint = Service.AddServiceEndpoint(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(IReservationService), &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WSHttpBinding(SecurityMode.None), &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                                                          &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;EndpointDiscoveryBehavior endpointDiscoveryBehavior = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EndpointDiscoveryBehavior();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Add the discovery behavior to the endpoint.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;wsEndpoint.Behaviors.Add(endpointDiscoveryBehavior);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Make the service discoverable over UDP multicast&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Service.Description.Behaviors.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceDiscoveryBehavior());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Service.AddServiceEndpoint(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscovery11));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;ServiceMetadataBehavior smb = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServiceMetadataBehavior();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;smb.HttpGetEnabled = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;smb.HttpGetUrl = baseAddress;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Service.Description.Behaviors.Add(smb);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Service.Open();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;In questa modalità i device MF non devono conoscere l’indirizzo IP del servizio ma solamente il nome del contratto e/o il guid dello stesso.&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;Reservation Proxy(Xe.Sample2.ReservationProxy)&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Una volta definite il servizio WCF modifichiamo il modulo MF che richiede le prenotazioni. Per questo è stato creato un nuovo modulo che racchiude il proxy verso il servizio di back-end. Il proxy è racchiuso nell’esempio denominato Xe.Sample2.ReservationMicroProxy. Per la generazione del proxy si usa l’utility MFSvcUtil.exe inclusa nel sdk del .NET MF 4.1. Nel codice ho inserito anche il batch che invoca l’utility che genererà i seguenti file:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Reservation.cs &lt;br /&gt;&lt;li&gt;ReservationClientProxy.cs&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Questi due file rappresentano il data contract serializer per le entità passate attraverso il canale e il proxy autogenerato. La classe di helper che permette di utilizzare il proxy autogenerato è ReservationProxy. Oltre alle funzioni di helper questa classe si incarica anche di esegure il discover del servizio. Questo viene eseguito specificando semplicemente il contratto esposto completo di name space.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateServiceProxy()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Uri remoteEp = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080"&gt;"http://192.168.1.33:8084/Xe.Sample2.ReservationService/ReservationService/"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        WS2007HttpBinding binding = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WS2007HttpBinding(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; HttpTransportBindingConfig(remoteEp));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// ProtocolVersion11 can be used if the corresponding WCF desktop server application&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// WcfServer uses wsHttpBinding instead of the custom binding "Soap11AddressingBinding"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _proxy = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ReservationServiceClientProxy(binding, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                                   &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ProtocolVersion11());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _proxy.IgnoreRequestFromThisIP = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!Discover())&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            Debug.Print(&lt;span style="color: #006080"&gt;"Discovery failed, trying direct address"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            _proxy.EndpointAddress = &lt;span style="color: #006080"&gt;"http://192.168.1.33:8084/Xe.Sample2.ReservationService/ReservationService/"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Discover()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    DpwsServiceTypes typeProbes = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DpwsServiceTypes();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    typeProbes.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DpwsServiceType(&lt;span style="color: #006080"&gt;"IReservationService"&lt;/span&gt;, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                       &lt;span style="color: #006080"&gt;"http://localhost/ReservationService"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// A Probe is used to discover services on a network. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// The Probe method sends a UDP request to the DPWS multicast address, &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// 239.255.255.250:3702. Any service that implements types specified &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// in the filters parameter should respond with a ProbeMatches message. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// The ProbeMatches message is unicast back to the that client that made &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// the request. If a null filter is supplied, any DPWS-compliant service &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// should reply with a ProbeMatches response. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// Probe waits ReceiveTimeout for ProbeMatches. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    DpwsServiceDescriptions descs = _proxy.DiscoveryClient.Probe(typeProbes, 1, 20000);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (descs.Count &amp;gt; 0)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _proxy.EndpointAddress = descs[0].XAddrs[0];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Il codice sopra esposto esegue il discover del servizio e ne ritorna endpoint address dello stesso. In caso di errore viene assegnato un endpoint address preconfezionato. Una volta eseguito il discover del servizio il proxy è pronto per essere utilizzato.&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;Reservation Marker(Xe.Sample2.ReservationMarker)&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Questo modulo è sviluppato utilizzando .NET MF e costituisce il consumatore del servizio di prenotazione precedentemente illustrato. Trami questa modulo è possibile richiedere le seguenti azioni:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Eseguire una nuova prenotazione. &lt;br /&gt;&lt;li&gt;Richiedere lo stato di una specifica coda.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Il device utilizzato in questo esempio è dotato di touch screen e tramite questo viene eseguita la richiesta di una nuova prenotazione. Dopo l’invio della richiesta di una nuova prenotazione viene aggiornato lo stato corrente della coda di prenotazioni su cui è stata eseguita la richiesta stessa.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ImgTouchDown(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, TouchEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _border.BorderBrush = _reverseBorderBrush;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _border.Invalidate();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Utility.Piezo(1000, 400);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ret = ReservationProxy.Instance.AskNewQueueReservation(QueueCodeToken);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DispatcherOperationCallback(UpdateValues), &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                    &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(&lt;span style="color: #006080"&gt;"AskNewQueueReservation: "&lt;/span&gt; + ret.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {                &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Da notare l’utilizzo del dispatcher per la richiesta asincrona di aggiornamento della stato della coda. &lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; UpdateValues(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; input)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        var status = ReservationProxy.Instance.GetQueueStatus(QueueCodeToken);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(status == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _currentText.TextContent = Utils.PadLeft(status.Current.ToString(), 3);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _nextText.TextContent    = Utils.PadLeft(status.Next.ToString(), 3);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _currentText.Invalidate();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _nextText.Invalidate();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; status;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Altra cosa fondamentale da notare è il valore di ritorno della chiamata GetQueueStatus. Il valore ritornato è un’istanza di una classe QueueStatus definita nel proxy. Tale classe è autogenerata dall’utility MFSvcUtil vista in precedenza. Questo punto è fondamentale. Nell’esempio precedente, ogni modifica al protocollo era costosa in ordine di tempo e di debug. In questo caso se il servizio modifica l’entità ritornata basterà semplicemente rigenerare il proxy.&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;Reservation Ticket(Xe.Sample2.ReservationTicket)&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Nel modulo precedente abbiamo visto come consumare un servizio WCF, ora vediamo come sia possibile rendere disponibile un servizio WCF direttamente su un device con .NET Micro FW. Questo servizio sarà consumato da un applicativo lato desktop. Il modulo mette a disposizione un servizio WCF per la stampa del ticket di prenotazione su una stampante dedicata collegata direttamente sul device tramite porta USB. Per generare il servizio WCF sul device dobbiamo prima creare un servizio fake con cui interagire con l’utility MFSvcUtil. Il servizio fake in questione è il modulo denominato Xe.Sample2.FakeService. Questo modulo è un applicativo winform che contiene un servizio WCF con lo stesso contratto del servizio che vogliamo sia implementato lato device.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[ServiceContract]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IReservationTicketService&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [OperationContract]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PrintReservationTicket(&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt; [] buffer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Una volta implementato il servizio facciamo partire l’applicativo e tramite l’utility MFSvcUtil generiamo il proxy. Nel codice di esempio ho incluso il file batch che genera il proxy del servizio fake. Se notiamo l’utility, oltre al codice del proy, genera anche la classe per implementare hosting del servizio lato device con lo stesso contratto del servizio su cui si è eseguito il proxy. In dettaglio la classe generata è contenuta nel file ReservationTicketHostedService.cs. Ora il prossimo passo è quello di implementare la classe del servizio vero e proprio. Il codice è contenuto nel file ReservationTicketImpl.cs.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; PrintReservationTicketResponse PrintReservationTicket(PrintReservationTicket req)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{ &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {            &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Program.Instance.InvokeUpdateAction(Resources.GetString(Resources.StringResources.ActionPrintTicket));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Program.Instance.InvokePrintTicket(req.buffer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        System.Threading.Thread.Sleep(500);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        var ret = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PrintReservationTicketResponse();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Program.Instance.InvokeUpdateAction(Resources.GetString(Resources.StringResources.ActionWaitPrintTicket));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(&lt;span style="color: #006080"&gt;"PrintReservationTicket"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ret;        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PrintReservationTicketResponse();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;La classe ReservationTicketImpl, che contiene il metodo sopra riportato, implementa l’interfaccia IIReservationTicketService generata sempre durante la fase di generazione del proxy. &lt;br /&gt;&lt;p&gt;Il servizio sul dispositivo è fatto partire nel main dell’applicativo:&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Program.Instance.Dispatcher.BeginInvoke(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DispatcherOperationCallback(Program.Instance.AsyncStartService), &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;La funzione di start vera è propria è la seguente:&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; StartService()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Initialize the binding&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; guid = &lt;span style="color: #006080"&gt;"urn:uuid:926A876C-6C6A-4FC5-B665-05B36DDBB932"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// ProtocolVersion10 can be used only if the corresponding client application&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// uses a custom binding with Soap12WSAddressingAugust2004 text message encoding.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        ProtocolVersion version = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ProtocolVersion11();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.Initialize(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WS2007HttpBinding(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; HttpTransportBindingConfig(guid, 8085)), &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                          version);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Set device information&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.Manufacturer    = &lt;span style="color: #006080"&gt;"MyCompany"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.ManufacturerUrl = &lt;span style="color: #006080"&gt;"http://www.mycompany.com/"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.ModelName       = &lt;span style="color: #006080"&gt;"Reservation Ticket Device"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.ModelNumber     = &lt;span style="color: #006080"&gt;"1.0"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.ModelUrl        = &lt;span style="color: #006080"&gt;"http://www.mycompany.com/"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisModel.PresentationUrl = &lt;span style="color: #006080"&gt;"http://www.mycompany.com/"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisDevice.FriendlyName    = &lt;span style="color: #006080"&gt;"ReservationTicketService"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisDevice.FirmwareVersion = &lt;span style="color: #006080"&gt;"alpha"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.ThisDevice.SerialNumber    = &lt;span style="color: #006080"&gt;"32345678"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Add a Host service type&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.Host = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ReservationTicketService(version);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Add Dpws hosted service(s) to the device&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.HostedServices.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; IReservationTicketService(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ReservationTicketImpl()));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Set this device property if you want to ignore this clients request&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.IgnoreLocalClientRequest = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Turn console messages on&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Console.Verbose = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(&lt;span style="color: #006080"&gt;"Start DPWS device service with endpoint address: '"&lt;/span&gt; + Device.EndpointAddress + &lt;span style="color: #006080"&gt;"'"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        ServerBindingContext ctx = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ServerBindingContext(version);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Start the device&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Device.Start(ctx); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _serviceStatus = Resources.GetString(Resources.StringResources.ServiceStartedStatus);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _actionStatus  = Resources.GetString(Resources.StringResources.ActionWaitPrintTicket);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _serviceStatus = Resources.GetString(Resources.StringResources.ServiceFailedStatus);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DispatcherOperationCallback(UpdateValues), &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Come si vede la partenza del servizio da prima crea il binding, poi crea l’host del servizio a cui aggiunge l’implementazione concreta del nostro servizio e poi fa partire la parte DPWS. A questo punto il nostro servizio WCF su dispositivo .NET Micro FW è pronto per accettare richieste dall’esterno. &lt;br /&gt;&lt;p&gt;Sempre nello stesso modulo da notare anche l’utilizzo diretto della porta USB, mediante le librerie fornite dal produttore della scheda stessa.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;USBHostController.DeviceConnectedEvent += Program.Instance.DeviceConnectedEvent; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;…&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DeviceConnectedEvent(USBH_Device device)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (device.TYPE == USBH_DeviceType.Printer)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Debug.Print(&lt;span style="color: #006080"&gt;"Printer Connected"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Printer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; USBH_Printer(device);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;…&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; InvokePrintTicket(&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Printer != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; Printer.GetStatus() == USBH_PrinterStatus.Selected)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Printer.SendData(buffer, 0, buffer.Length, 1000);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;h5&gt;Reservation Ticket Client (Xe.Sample2.ReservationTicketClient)&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Questo modulo rappresenta il client, lato desktop, del servizio WCF che abbiamo appena implementato sul device. Per consumare il servizio WCF come sempre creiamo il nostro modulo proxy. Questo modulo è racchiuso nell’esempio Xe.Sample2.ReservationTicketProxy. In questo modulo importiamo il file ReservationTicketService.cs, generato in precedenza durante lo sviluppo del servizio WCF. In questo file vi è la definizione dell’interfaccia IReservationTicketService che sarà utilizzata come criterio di ricerca per eseguire il discover del servizio stesso.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; FindService()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        DiscoveryClient discoveryClient =&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DiscoveryClient(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscovery11));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Collection&amp;lt;EndpointDiscoveryMetadata&amp;gt; services = discoveryClient.Find(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FindCriteria(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(IReservationTicketService))).Endpoints;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        discoveryClient.Close();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (services.Count == 0)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            _serviceAddress = services[0].ListenUris[0];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Tramite questo codice la classe di proxy ricerca un servizio che espone il contratto definito nell’interfaccia IReservationTicketService senza conoscerne url. Una volta definito il proxy non ci resta che consumare il servizio sul device.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PrintReservationTicket(&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_proxy == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        { &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(FindService())&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                _proxy = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ReservationTicketServiceClient(EndPointConfigurationName, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                                                            _serviceAddress.AbsoluteUri);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        _proxy.PrintReservationTicket(buffer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {                &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Questi sono i devices che ho utilizzato per la realizzazione degli esempi.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pq1dobOEoSmx7aoHFy2w6l_mqSvbfIsb7Wx4fX7piuKhtdVHLVKU8wBH3Aemi7WfRVNhNigqlxQiJlwQ3nHYzog/Wcf_MicroFW_Image03.png?psid=1"&gt;&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;Considerazioni Sample2&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Osservando il codice del secondo esempio si può capire come si sia evoluta la parte di comunicazione tra i due FW. L’introduzione del supporto WCF tra i due mondi del .NET FW ha aperto scenari di integrazione molto accattivanti. Il fatto di poter eseguire la ricerca di un servizio senza conoscerne in anticipo l’indirizzo esatto permette una libertà totale sull’architettura definibile. Questo e molto altro ancora, introdotto con il .NET FW 4.1, mi ha spinto a rivedere in questa direzione il progetto in questione. Spero che, sia la spiegazione che il codice allegato, sia sufficiente a generare in chi legge curiosità verso il .NET MF.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-3473215528406215192?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/3473215528406215192/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/gestione-prenotazioni-con-net-micro-fw.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3473215528406215192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3473215528406215192'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/gestione-prenotazioni-con-net-micro-fw.html' title='Gestione prenotazioni con .NET Micro FW'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-6947845081188747274</id><published>2011-11-23T00:03:00.001-08:00</published><updated>2011-11-27T01:46:02.571-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='tinyCLR.it'/><title type='text'>TinyCLR.it dove eravamo rimasti…</title><content type='html'>Già dove eravamo rimasti! Durante la sessione di giugno 2011 riguardante il .NET Micro FW, che ho tenuto per &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt;, ho preannunciato l’imminente comparsa della prima community italiana interamente dedicata al .NET Micro FW ed il relativo sito. Questo iniziativa è partita da una serie di professionisti e di colleghi per centralizzare le varie esperienze in un unico contenitore. Come spesso accade sono e siamo stati sommersi dai mille impegni lavorativi. Questi mesi ci hanno visto impegnati su vari fronti, la raccolta del materiale da mettere on line, la definizione della piattaforma su ci basare il sito, i vari problemi di hosting, la scrittura di vari articoli, ecc.. Tutto questo ovviamente “mediando” il tempo tra lavoro, famiglia ed impegni vari. Morale: entro la fine di dicembre andremmo on line con il &lt;a href="http://www.tinyclr.it/"&gt;sito&lt;/a&gt;! Nei prossimi giorni pubblicherò qualche anteprima del &lt;a href="http://www.tinyclr.it/"&gt;sito&lt;/a&gt;, giusto per raccogliere qualche commento e suggerimento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-6947845081188747274?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/6947845081188747274/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/tinyclrit-dove-eravamo-rimasti.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6947845081188747274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6947845081188747274'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/tinyclrit-dove-eravamo-rimasti.html' title='TinyCLR.it dove eravamo rimasti…'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-6778146056033260133</id><published>2011-11-17T00:55:00.001-08:00</published><updated>2011-11-17T00:55:16.428-08:00</updated><title type='text'>Windows Embedded roadmap update</title><content type='html'>&lt;p&gt;I teams di Windows Embedded stanno delineando le prossime generazione dei loro prodotti, in questo &lt;a href="http://www.microsoft.com/Presspass/Features/2011/nov11/11-14RoadMap.mspx"&gt;link&lt;/a&gt; trovata la roadmap. Un sunto per punti è disponibile in questo &lt;a href="http://blogs.msdn.com/b/obloch/archive/2011/11/14/windows-embedded-roadmap-update.aspx"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-6778146056033260133?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/6778146056033260133/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/i-teams-di-windows-embedded-stanno.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6778146056033260133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6778146056033260133'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/i-teams-di-windows-embedded-stanno.html' title='Windows Embedded roadmap update'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7741757934224654947</id><published>2011-11-17T00:46:00.001-08:00</published><updated>2011-11-17T00:46:24.872-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Embedded Compact'/><title type='text'>Windows Embedded Compact 7 Online Training</title><content type='html'>&lt;p&gt;Grazie a &lt;a href="http://geekswithblogs.net/WindowsEmbeddedCookbook/Default.aspx"&gt;Valter Minute&lt;/a&gt; ora sono disponibili una nuova serie di &lt;a href="http://www.microsoft.com/windowsembedded/en-us/develop/windows-embedded-compact-7-online-training.aspx"&gt;training on line&lt;/a&gt;, bel lavoro come sempre. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7741757934224654947?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7741757934224654947/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/grazie-valter-minute-ora-sono.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7741757934224654947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7741757934224654947'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/grazie-valter-minute-ora-sono.html' title='Windows Embedded Compact 7 Online Training'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5781421127738386075</id><published>2011-11-17T00:43:00.001-08:00</published><updated>2011-11-17T00:43:21.239-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><title type='text'>Developing a Windows Phone Application from Start to Finish</title><content type='html'>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg680270%28PandP.11%29.aspx"&gt;Articolo&lt;/a&gt; veramente ben fatto!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5781421127738386075?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5781421127738386075/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/articolo-veramente-ben-fatto.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5781421127738386075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5781421127738386075'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/articolo-veramente-ben-fatto.html' title='Developing a Windows Phone Application from Start to Finish'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1412830990662051337</id><published>2011-11-06T01:03:00.001-07:00</published><updated>2011-11-06T01:03:55.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Gadgeteer'/><title type='text'>FEZ Hydra preview</title><content type='html'>&lt;p&gt;&lt;a href="http://www.ghielectronics.com/"&gt;GHI&lt;/a&gt; ha pubblicato le prime immagini della nuova scheda &lt;a href="http://www.youtube.com/watch?v=3_mXbBQvWPo&amp;amp;feature=feedu"&gt;FEZ Hydra&lt;/a&gt; per la famiglia &lt;a href="http://www.netmf.com/gadgeteer/"&gt;.NET Gadgeteer&lt;/a&gt;, buona visione!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1412830990662051337?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1412830990662051337/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/11/fez-hydra-preview.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1412830990662051337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1412830990662051337'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/11/fez-hydra-preview.html' title='FEZ Hydra preview'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8174732234313746569</id><published>2011-10-06T14:29:00.001-07:00</published><updated>2011-10-06T14:29:33.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>.NET Micro FW 4.2 RTM</title><content type='html'>&lt;p&gt;Da qualche giorno è stata rilasciata la versione RTM del .NET MF 4.2. È possibile scaricare l' &lt;a href="http://netmf.codeplex.com/releases/view/52341"&gt;SDK e PK&lt;/a&gt;. In questa versione sono state introdotte le seguenti nuove funzionalità:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Remoto Firmware Update&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Complete Cryptographic Object Model over PCKS #11&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;1-Wire, PWM and A/D object model&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;SNTP and FTP (client and server)&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;StringBuilder and Regex types&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;VB.NET&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Support for Cortex M3 devices with STM32 processor family samples&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;PKStudio&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Per un elenco dettagliato delle nuove funzionalità questo è il &lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/10/04/version-4-2-rtm.aspx"&gt;link dell’annuncio&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8174732234313746569?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8174732234313746569/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/10/net-micro-fw-42-rtm.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8174732234313746569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8174732234313746569'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/10/net-micro-fw-42-rtm.html' title='.NET Micro FW 4.2 RTM'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1821799867477530626</id><published>2011-09-22T01:54:00.001-07:00</published><updated>2011-09-22T01:54:21.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Compact'/><title type='text'>SQL Compact Query Analyzer</title><content type='html'>&lt;p&gt;Per chi utilizza Sql Compact &lt;a href="http://sqlcequery.codeplex.com/"&gt;questo&lt;/a&gt; sicuramente è un &lt;a href="http://sqlcequery.codeplex.com/"&gt;strumento&lt;/a&gt; molto interessante.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1821799867477530626?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1821799867477530626/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/sql-compact-query-analyzer.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1821799867477530626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1821799867477530626'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/sql-compact-query-analyzer.html' title='SQL Compact Query Analyzer'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5700738806401080300</id><published>2011-09-06T04:58:00.001-07:00</published><updated>2011-09-06T04:58:01.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS Tools'/><title type='text'>Portable Libraries for Visual Studio 2010 SP1</title><content type='html'>&lt;p&gt;Il &lt;a href="http://blogs.msdn.com/b/bclteam/"&gt;BCL Team&lt;/a&gt; di Microsoft ha rilasciato questo interessante &lt;a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981"&gt;PowerTool&lt;/a&gt; per VS2010 SP1. Tramite questo tool è possibile gestire assemblies per uno o più target .NET FW. Il tool gestisce il .NET FW Full (dalla 2.0 alla 4.0, con il profilo full o client), Silverlight, Silverlight for Windows Phone 7 e Xbox 360. Gran bel lavoro!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5700738806401080300?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5700738806401080300/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/portable-libraries-for-visual-studio.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5700738806401080300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5700738806401080300'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/portable-libraries-for-visual-studio.html' title='Portable Libraries for Visual Studio 2010 SP1'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4648958048559177641</id><published>2011-09-06T04:45:00.001-07:00</published><updated>2011-09-06T04:45:04.960-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Toolkits for devices</title><content type='html'>&lt;p&gt;Volevo segnalare &lt;a href="http://blogs.msdn.com/b/microsoft_press/archive/2011/08/31/quick-news-windows-azure-toolkits-for-devices.aspx"&gt;l’aggiornamento&lt;/a&gt; del medesimo SDK per &lt;a href="https://github.com/microsoft-dpe/wa-toolkit-ios"&gt;iOS&lt;/a&gt; e &lt;a href="https://github.com/microsoft-dpe/wa-toolkit-android"&gt;Android&lt;/a&gt; !&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4648958048559177641?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4648958048559177641/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/windows-azure-toolkits-for-devices.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4648958048559177641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4648958048559177641'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/windows-azure-toolkits-for-devices.html' title='Windows Azure Toolkits for devices'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-3420458285053869299</id><published>2011-09-02T10:05:00.001-07:00</published><updated>2011-09-02T10:05:54.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>A .NET Micro FW Cool Product</title><content type='html'>&lt;p&gt;Questo &lt;a href="http://www.youtube.com/watch?v=VFz6XmRSLTM&amp;amp;feature=player_detailpage"&gt;video&lt;/a&gt; da una buona dimostrazione dei prodotti che si possono sviluppare/realizzare con il .NET Micro FW. Buona visione.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-3420458285053869299?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/3420458285053869299/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/net-micro-fw-cool-product.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3420458285053869299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3420458285053869299'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/net-micro-fw-cool-product.html' title='A .NET Micro FW Cool Product'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1933921181279501774</id><published>2011-09-02T10:02:00.001-07:00</published><updated>2011-09-02T10:02:34.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>The Internet of Things</title><content type='html'>&lt;p&gt;Vi segnalo questo &lt;a href="http://www.zdnet.co.uk/blogs/zdnet-uk-book-reviews-10015295/getting-started-with-the-internet-of-things-10024207/"&gt;libro&lt;/a&gt;, ottima introduzione, e non solo, all’argomento!!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1933921181279501774?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1933921181279501774/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/internet-of-things.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1933921181279501774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1933921181279501774'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/internet-of-things.html' title='The Internet of Things'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8835973846295842451</id><published>2011-09-02T10:00:00.001-07:00</published><updated>2011-09-02T10:00:29.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>NETMF Version 4.2 Release Candidate 2</title><content type='html'>&lt;p&gt;In questo &lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/08/30/netmf-version-4-2-release-candidate-2.aspx"&gt;articolo&lt;/a&gt; viene spiegato cosa introduce questa nuova versione. Buona lettura.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8835973846295842451?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8835973846295842451/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/netmf-version-42-release-candidate-2.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8835973846295842451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8835973846295842451'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/netmf-version-42-release-candidate-2.html' title='NETMF Version 4.2 Release Candidate 2'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7201745020808038894</id><published>2011-09-02T09:14:00.001-07:00</published><updated>2011-09-02T09:14:29.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><title type='text'>CE Power Management</title><content type='html'>&lt;p&gt;Chi sviluppa su device basati su Windows CE di tipo industriale sa bene che il controllo del livello della batteria è una dei criticità da affrontare. Purtroppo il .NET CF per Windows CE non offre nessuna classe per il monitoraggio di tale risorsa. Ovviamente il sistema operativo mette a disposizione un set di &lt;a href="http://msdn.microsoft.com/en-us/library/ms895437.aspx"&gt;API apposite&lt;/a&gt; per questo problema. Nel &lt;a href="https://skydrive.live.com/?cid=afd1bdc9b805cf1c&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=AFD1BDC9B805CF1C%21258#"&gt;codice&lt;/a&gt; associato al post trovare una classe C# che si fa carico di gestire queste API. Oltre al &lt;a href="https://skydrive.live.com/?cid=afd1bdc9b805cf1c&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=AFD1BDC9B805CF1C%21258#"&gt;codice&lt;/a&gt; della classe trovate anche un programma di esempio che ne dimostra l’utilizzo, in dettaglio:&lt;/p&gt; &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Form1_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     PwdManagment = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PowerManagement();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     PwdManagment.PowerNotify += PwdManagment_PowerNotify;            &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; btnStart_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     PwdManagment.StartNotifications();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     lblNotification.Text = &lt;span style="color: #006080"&gt;"StartNotifications..."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; btnStopNotification_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     PwdManagment.StopNotifications();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     lblNotification.Text = &lt;span style="color: #006080"&gt;"StopNotifications..."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PwdManagment_PowerNotify(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// get power info element&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         var powerInfo = PwdManagment.GetNextPowerInfo();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( powerInfo.Message != PowerManagement.MessageTypes.Status )&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.BeginInvoke(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Action&amp;lt;PowerManagement.PowerInfo&amp;gt;(UpdateLevels), powerInfo);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;(Exception ex)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         MessageBox.Show(ex.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7201745020808038894?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7201745020808038894/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/09/ce-power-management.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7201745020808038894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7201745020808038894'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/09/ce-power-management.html' title='CE Power Management'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-9103047995418478399</id><published>2011-07-30T01:36:00.001-07:00</published><updated>2011-07-30T01:36:53.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Gadgeteer'/><title type='text'>Fez Spider Kit for .NET Gadgeteer</title><content type='html'>&lt;p&gt;Finalmente, dopo un po' di attesa, iniziano ad arrivare le prime mainboard basate su &lt;a href="http://www.netmf.com/gadgeteer/"&gt;.NET gadgeteer&lt;/a&gt;. Come sempre &lt;a href="http://www.ghielectronics.com/"&gt;GHI&lt;/a&gt; non delude!!! Ecco il &lt;a href="http://www.ghielectronics.com/catalog/product/297"&gt;link&lt;/a&gt; al kit, sto già compilando il modulo d’ordine!!! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-9103047995418478399?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/9103047995418478399/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/07/fez-spider-kit-for-net-gadgeteer.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9103047995418478399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9103047995418478399'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/07/fez-spider-kit-for-net-gadgeteer.html' title='Fez Spider Kit for .NET Gadgeteer'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5914794817718481958</id><published>2011-07-29T00:39:00.001-07:00</published><updated>2011-07-29T00:39:57.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sql'/><title type='text'>SQL Server 2008 R2 – Error 2337 su Virtual PC</title><content type='html'>&lt;p&gt;In questi giorni sto preparando un po' di macchine virtuali con Windows Virtual PC. Durante l’installazione di SQL Server 2008 R2, montando direttamente l’immagine .iso nella macchina virtuale, a circa metà installazione ricevo l’errore 2337! Cercando un po' scopro che è un problema della gestione del file .iso di Virtual PC. Soluzione ? Montare il cd fisico o estrarre i files sulla macchina virtuale o share condivisa e ripetere l’installazione!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5914794817718481958?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5914794817718481958/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/07/sql-server-2008-r2-error-2337-su.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5914794817718481958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5914794817718481958'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/07/sql-server-2008-r2-error-2337-su.html' title='SQL Server 2008 R2 – Error 2337 su Virtual PC'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-3009316218646716033</id><published>2011-07-21T05:02:00.001-07:00</published><updated>2011-07-21T05:02:57.664-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='OData'/><title type='text'>TFS, OData &amp; Windows Phone 7</title><content type='html'>&lt;p&gt;In questo &lt;a href="http://pcbl.de/tfs-on-the-road/"&gt;post&lt;/a&gt; trovate un client WP7 per la consultazione di TFS tramite &lt;a href="http://blogs.msdn.com/b/briankel/archive/2011/04/07/odata-service-for-team-foundation-server-2010.aspx"&gt;TFS OData Service&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-3009316218646716033?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/3009316218646716033/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/07/tfs-odata-windows-phone-7.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3009316218646716033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3009316218646716033'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/07/tfs-odata-windows-phone-7.html' title='TFS, OData &amp;amp; Windows Phone 7'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7453339695965073886</id><published>2011-07-21T03:16:00.001-07:00</published><updated>2011-07-21T03:16:34.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='V.Next'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><title type='text'>Agile Project Management in Visual Studio ALM V.Next</title><content type='html'>&lt;p&gt;Per chi vuole avere un’idea delle features inerenti “agile project management” che arriveranno nella prossima versione di TFS questo &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx"&gt;post&lt;/a&gt; ne da un’anticipazione. Buona lettura a tutti.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7453339695965073886?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7453339695965073886/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/07/agile-project-management-in-visual.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7453339695965073886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7453339695965073886'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/07/agile-project-management-in-visual.html' title='Agile Project Management in Visual Studio ALM V.Next'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4822001625934251353</id><published>2011-07-12T06:42:00.001-07:00</published><updated>2011-07-12T06:42:14.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>.NET Micro FW–Progetti in CodePlex</title><content type='html'>&lt;p&gt;Nella versione 4.2 del Micro FW, attualmente in &lt;a href="http://netmf.codeplex.com/releases/view/52340"&gt;beta&lt;/a&gt;, vi sono numerosi contributi da parte della comunità. In questo &lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/06/27/netmf-4-2-other-codeplex-netmf-projects.aspx"&gt;post&lt;/a&gt; sono riassunti i vari progetti che stanno “comparendo” su codeplex in modo parallelo. Ovviamente questa è solo una sintesi del materiale che potete trovare ma sicuramente sono i più accattivanti.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4822001625934251353?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4822001625934251353/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/07/net-micro-fwprogetti-in-codeplex.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4822001625934251353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4822001625934251353'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/07/net-micro-fwprogetti-in-codeplex.html' title='.NET Micro FW–Progetti in CodePlex'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-2392121495759666228</id><published>2011-06-21T13:53:00.001-07:00</published><updated>2011-06-21T13:53:28.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>.NET Micro FW 4.2–Porting Kit</title><content type='html'>&lt;p&gt;Dopo appena qualche settimana dall’uscita della versione &lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/06/07/netmf-version-4-2-beta-now-available.aspx"&gt;beta del NETMF 4.2&lt;/a&gt; arriva un altro grande contributo direttamente dalla community. Questo contributo è il &lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2011/06/20/netmf-4-2-porting-kit-studio.aspx"&gt;PKStudio&lt;/a&gt; (Alexandr Surkov e Igor Kiselev). &lt;/p&gt; &lt;p&gt;Che dire, splendido lavoro !!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-2392121495759666228?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/2392121495759666228/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/net-micro-fw-42porting-kit.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2392121495759666228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2392121495759666228'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/net-micro-fw-42porting-kit.html' title='.NET Micro FW 4.2–Porting Kit'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5581504497414304719</id><published>2011-06-20T05:02:00.001-07:00</published><updated>2011-06-20T05:02:42.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><title type='text'>Windows Embedded Compact 7–ShowCase</title><content type='html'>&lt;p&gt;Volevo segnalare una serie di &lt;a href="http://www.microsoft.com/showcase/en/US/channels/windowsembedded/results?page=4"&gt;video&lt;/a&gt; di self training su Windows Embedded Compact 7. Si va dall’architettura, alle nuove features fino alle tecniche avanzate di debugging, passando per la creazione completa di un’immagine del sistema operativo. Buona visione a tutti.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5581504497414304719?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5581504497414304719/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/windows-embedded-compact-7showcase.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5581504497414304719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5581504497414304719'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/windows-embedded-compact-7showcase.html' title='Windows Embedded Compact 7–ShowCase'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7184505054508242949</id><published>2011-06-20T04:55:00.001-07:00</published><updated>2011-06-20T04:55:32.562-07:00</updated><title type='text'>“Professional Windows Embedded Compact” 7</title><content type='html'>&lt;p&gt;In arrivo il libro della Wrox dedicato a Windows Embedded Compact 7, gli autori sono Samuel Phung, David Jones e Thierry Joubert. L’uscita è prevista per settembre ma è già possibile acquistarlo in &lt;a href="http://www.amazon.com/Professional-Windows-Embedded-Compact-7/dp/1118050460/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1306313208&amp;amp;sr=1-1"&gt;“pre order”&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7184505054508242949?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7184505054508242949/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/professional-windows-embedded-compact-7.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7184505054508242949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7184505054508242949'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/professional-windows-embedded-compact-7.html' title='“Professional Windows Embedded Compact” 7'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4645993195779697708</id><published>2011-06-20T04:50:00.001-07:00</published><updated>2011-06-20T04:50:43.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>Android Open Accessory &amp; .NET MicroFW</title><content type='html'>&lt;p&gt;La piattaforma Android 3,1 (backport anche per Android 2.3.4) introduce il supporto accessori Open Android, che consente ad un hardware esterno USB di interagire con un dispositivo Android in una speciale modalità "accessorio". In questo &lt;a href="http://www.tinyclr.com/forum/15/3459/"&gt;link&lt;/a&gt; potete trovare una interessante soluzione per far parlare i due “mondi”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4645993195779697708?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4645993195779697708/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/android-open-accessory-net-microfw.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4645993195779697708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4645993195779697708'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/android-open-accessory-net-microfw.html' title='Android Open Accessory &amp;amp; .NET MicroFW'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8696083940166247606</id><published>2011-06-16T09:43:00.001-07:00</published><updated>2011-06-16T09:43:36.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>Codice e Slide della sessione: “Introduzione a .Net Micro Framework”</title><content type='html'>&lt;p&gt;Ecco disponibili al download, il codice e le slide del &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; community meeting che ho tenuto il 10 Giugno 2011 dal titolo &lt;strong&gt;Introduzione a .Net Micro Framework&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_MicroFW%5E_10%5E_06%5E_2011/Micro%20FW%20-%20Overview%20-%20Slide.zip"&gt;Slide&lt;/a&gt;  &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_MicroFW%5E_10%5E_06%5E_2011/Micro%20FW%20-%20Overview%20-%20Demo.zip"&gt;Demo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;“Il Micro Framework è un’infrastruttura per microcontrollori a 32 bit i cui vantaggi principali consistono nel fornire una ricca API indipendente dall’hardware, un’efficiente controllo sulle periferiche del microcontrollore, una runtime che gestisce aspetti che vanno dal bootstrap al debug del firmware, un ricco ambiente di sviluppo quale Visual Studio, il supporto all'emulazione del dispositivo oltre, naturalmente, a innumerevoli altri vantaggi intrinseci del Framework .NET."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Volevo porgere un ringraziamento a tutte le numerose persone presenti al meeting ed allo staff di &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; per il supporto tecnico, morale ed organizzativo della sessione e per l’opportunità che mi è stata data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8696083940166247606?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8696083940166247606/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/codice-e-slide-della-sessione.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8696083940166247606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8696083940166247606'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/codice-e-slide-della-sessione.html' title='Codice e Slide della sessione: “Introduzione a .Net Micro Framework”'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4987568470370055691</id><published>2011-06-01T07:43:00.001-07:00</published><updated>2011-06-01T07:43:02.240-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><title type='text'>Introduzione a .NET Micro Framework</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Venerdì 10.06.2011 terrò un meeting con &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; su questo argomento.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;“Il Micro Framework è un’infrastruttura per microcontrollori a 32 bit i cui vantaggi principali consistono nel fornire una ricca API indipendente dall’hardware, un’efficiente controllo sulle periferiche del microcontrollore, una runtime che gestisce aspetti che vanno dal bootstrap al debug del firmware, un ricco ambiente di sviluppo quale Visual Studio, il supporto all'emulazione del dispositivo oltre, naturalmente, a innumerevoli altri vantaggi intrinseci del Framework .NET.&lt;/em&gt; “&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In questa sessione saranno esplorate le basi del .NET Micro Framework e le sue possibilità, in dettaglio:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Cos’è .NET Micro FW&lt;/li&gt; &lt;li&gt;Ambiente di compilazione &lt;/li&gt; &lt;li&gt;Device disponibili e relativi SDK&lt;/li&gt; &lt;li&gt;.NET MF Base Class Library&lt;/li&gt; &lt;li&gt;Accesso HW&lt;/li&gt; &lt;li&gt;Networking&lt;/li&gt; &lt;li&gt;Graphics e Graphics User Interface&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;L’incontro si terrà presso:&lt;/p&gt; &lt;p&gt;Novotel Castellana&lt;br&gt;Via Alfredo Ceccherini 21 - Venezia Mestre &lt;/p&gt; &lt;p&gt;Se siete interessati non potete mancare, per iscrizioni: &lt;a href="http://www.xedotnet.org/Home/Meeting/20110610"&gt;clicca qui&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4987568470370055691?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4987568470370055691/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/06/introduzione-net-micro-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4987568470370055691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4987568470370055691'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/06/introduzione-net-micro-framework.html' title='Introduzione a .NET Micro Framework'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-2011981359186414455</id><published>2011-03-28T03:38:00.001-07:00</published><updated>2011-03-28T03:38:19.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Codice e Slide della sessione: “WCF &amp; .NET Micro Framework – A real case”</title><content type='html'>&lt;p&gt;Ecco disponibili al download, il codice e le slide del &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; community meeting che ho tenuto il 25 Marzo 2011 dal titolo &lt;strong&gt;WCF &amp;amp; .NET Micro Framework – A real case&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WCF%5E_MicroFW/WCF%5E_MicroFW%5E_Slide.zip"&gt;Slide&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WCF%5E_MicroFW/WCF%5E_MicroFW%5E_Demos.zip"&gt;Demo&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WCF%5E_MicroFW/GHI%5E_Flyers.zip"&gt;GHI Flyers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;“Con l’uscita della versione 4.0 di WCF e della versione 4.1 del .NET Micro FW i due mondi hanno la possibilità di parlarsi nativamente senza dover costruire sovrastrutture apposite. In questa sessione sarà affrontato un caso reale di utilizzo di WCF 4.0 con dispositivi basati su .NET Micro FW 4.1. L’utilizzo è bidirezionale, sarà mostrato come consumare servizi WCF da dispositivi e come gli stessi a loro volta possono mettere a disposizione servizi ricercabili e consumabili. La sessione si basa su un caso reale di utilizzo di cui verrà discussa sia l’architettura che le parti salienti del codice”&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Volevo porgere un ringraziamento a tutte le numerose persone presenti al meeting ed in particolare ad &lt;a href="http://www.boschin.it/"&gt;Andrea Boschin&lt;/a&gt; per il supporto tecnico, morale ed organizzativo della sessione. Grazie ancora a &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; per l’opportunità che mi è stata data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-2011981359186414455?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/2011981359186414455/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/03/codice-e-slide-della-sessione-wcf-net.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2011981359186414455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/2011981359186414455'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/03/codice-e-slide-della-sessione-wcf-net.html' title='Codice e Slide della sessione: “WCF &amp;amp; .NET Micro Framework – A real case”'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-6183799989413829255</id><published>2011-03-22T15:02:00.000-07:00</published><updated>2011-03-22T15:22:10.544-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Micro FW'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF &amp; .NET Micro FW</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" border="0" src="http://1nzvvg.bay.livefilestore.com/y1pQ3t0LzrMWsPnRM7fuvgNih8AGjNWea9QVNWo4YL5gV73vgvGgWMRI0BPfbS8fJ6MkpONYdxHu7n9iF1eobsOvl1sIMO4Nvud/WCF_MicroFW_Devices.jpg?psid=1" width="295" height="223"&gt;&lt;/p&gt; &lt;p&gt;Venerdì 25.03.2011 terrò un meeting con &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; su questo argomento, in questa sessione verrà illustrato un caso reale di integrazione tra device e servizi WCF in entrambi i lati. Questi sono i devices che utilizzerò nella presentazione. Alla fine della stessa ci sarà anche una piccola sorpresa, vi aspetto numerosi.&lt;/p&gt; &lt;p&gt;L’incontro si terrà presso:&lt;/p&gt; &lt;p&gt;Novotel Castellana&lt;br&gt;Via Alfredo Ceccherini 21 - Venezia Mestre &lt;/p&gt; &lt;h6&gt;&lt;/h6&gt; &lt;p&gt;Se siete interessati non potete mancare, per iscrizioni: &lt;a href="http://www.xedotnet.org/Home/Meeting/20110325"&gt;clicca qui&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-6183799989413829255?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/6183799989413829255/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/03/wcf-net-micro-fw.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6183799989413829255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6183799989413829255'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/03/wcf-net-micro-fw.html' title='WCF &amp;amp; .NET Micro FW'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-5618721615578582214</id><published>2011-03-02T08:41:00.001-08:00</published><updated>2011-03-02T08:42:56.716-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>.NET Micro Framework–Virtual meeting</title><content type='html'>Nel cambio dal vecchio al nuovo host di &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; erano andati persi i link delle registrazioni dei virtual meeting. Di seguito riporto il nuovo link della sessione che avevo tenuto:&lt;br /&gt;&lt;a href="http://www.xedotnet.org/webcasts/microfw/ReplayMeeting.htm"&gt;.NET Micro Framework&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-5618721615578582214?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/5618721615578582214/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/03/net-micro-frameworkvirtual-meeting.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5618721615578582214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/5618721615578582214'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/03/net-micro-frameworkvirtual-meeting.html' title='.NET Micro Framework–Virtual meeting'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8005131607648852521</id><published>2011-02-28T04:46:00.000-08:00</published><updated>2011-02-28T04:49:00.813-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>Codice e slide della sessione “.NET Parallel Programming”</title><content type='html'>&lt;p&gt;Ecco disponibili al download, il codice e le slide del &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; community meeting che ho tenuto il 25 Febbraio 2011 dal titolo &lt;strong&gt;.NET Parallel Programming&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_Net%5E_Parallel%5E_Extension/NET%20Parallel%20Extensions.zip"&gt;Slide&lt;/a&gt;  &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_Net%5E_Parallel%5E_Extension/NET%20Parallel%20Extension%20Demos.zip"&gt;Demo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;“&lt;em&gt;La programmazione concorrente è notoriamente difficile, anche per utenti esperti. Microsoft con l'iniziativa Parallel Computing Initiative pone le basi sia per la costruzione di programmi paralleli sia per la creazione di una nuova generazione di applicazioni. In questa sessione verranno affrontati Elaborazione parallela, Programmazione concorrente, Miglioramento delle prestazioni, Debug delle applicazioni parallele, Analisi delle applicazioni parallele. Tali argomenti saranno esposti utilizzando C# e il .NET 4.0 con i relativi nuovi strumenti messi a disposizione da VS 2010 inerenti la programmazione parallela. “&lt;/em&gt;&lt;/p&gt; &lt;p align="justify"&gt;Volevo porgere un ringraziamento a tutte le numerose persone presenti al meeting ed in particolare ad &lt;a href="http://www.boschin.it/"&gt;Andrea Boschin&lt;/a&gt; per il supporto “tecnico e morale” e la condivisione della sessione. Grazie ancora a &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; per l’opportunità che mi è stata data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8005131607648852521?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8005131607648852521/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/02/codice-e-slide-della-sessione-net.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8005131607648852521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8005131607648852521'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/02/codice-e-slide-della-sessione-net.html' title='Codice e slide della sessione “.NET Parallel Programming”'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4883084785798690092</id><published>2011-01-27T00:15:00.001-08:00</published><updated>2011-01-27T00:15:06.074-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><title type='text'>XeDotNet–Prossimi Meeting</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110128"&gt;28/01/2011 - Visual Studio Tips &amp;amp; Tricks&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Davide Vernole - Visual Studio 2010 Template, Wizard.  &lt;p&gt;Personalizzare la propria esperienza di utilizzo di Visual Studio 2010 per migliorare normalizzazione e produttività nel team di sviluppo. La sessione introdurrà i partecipanti all'uso di Template, Wizard e Add-In.&amp;gt;/p&amp;gt; &lt;/p&gt; &lt;li&gt;Marco Parenzan - Code Generation con con i templates T4 in Visual Studio  &lt;p&gt;Uno degli strumenti meno pubblicizzati ma più utili in Visual Studio sono i templates T4. Strumenti come l'Entity Framework e ASP.NET MVC li hanno resi (forse) più diffusi. Come sono fatti? Come si usano? Cosa ci si può fare? Una carrellata di alcuni usi interessanti, dagli oggetti POCO a WPF, passando attraverso lo "scaffolding" e i Domain Specific Languages... &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110225"&gt;25/02/2011 - .NET Programming Tecniques&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Mirco Vanini - .NET Parallel Programming  &lt;p&gt;La programmazione concorrente è notoriamente difficile, anche per utenti esperti. Microsoft con l'iniziativa Parallel Computing Initiative pone le basi sia per la costruzione di programmi paralleli sia per la creazione di una nuova generazione di applicazioni. In questa sessione verrano affrontati Elaborazione parallela, Programmazione concorrente, Miglioramento delle prestazioni, Debug delle applicazioni parallele, Analisi delle applicazioni parallele. Tali argomenti saranno esposti utilizzando C# e il .NET 4.0 con i relativi nuovi strumenti messi a disposizione da VS 2010 inerenti la programmazione parallela.&amp;gt;/p&amp;gt; &lt;/p&gt; &lt;li&gt;Andrea Boschin - MEF Explained  &lt;p&gt;Il Managed Extensibility Framework è un Dependency Container, introdotto recentemente nel framework, che consente di gestire facilmente la modularità delle applicazioni e il testing. Vedremo i concetti base di MEF, il suo utilizzo in alcuni casi pratici e l'integrazione con la più recente versione di Prism.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110325"&gt;25/03/2011 - WCF 4.0 Unleashed&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Davide Vernole - WCF 4.0 - What's new  &lt;p&gt;Windows Communication Foundation 4 ha introdotto nuove funzionalità che facilitano o agevolano l'utilizzo di questa tecnologia in particolari scenari di utilizzo. La sessione sarà incentrata sulle novità della versione 4.0 e sul confronto con la versione 3.5 &lt;/p&gt; &lt;li&gt;Mirco Vanini - WCF &amp;amp; .NET Micro FW – A real case  &lt;p&gt;Con l’uscita della versione 4.0 di WCF e della versione 4.1 del .NET Micro FW i due mondi hanno la possibilità di parlarsi nativamente senza dover costruire sovrastrutture apposite. In questa sessione sarà affrontato un caso reale di utilizzo di WCF 4.0 con dispositivi basati su .NET Micro FW 4.1. L’utilizzo è bidirezionale, sarà mostrato come consumare servizi WCF da dispositivi e come gli stessi a loro volta possono mettere a disposizione servizi ricercabili e consumabili. La sessione si basa su un caso reale di utilizzo di cui verrà discussa sia l’architettura che le parti salienti del codice.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110415"&gt;15/04/2011 - Smartphone &amp;amp; .NET&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Davide Senatore - Total Smartphone Interoperability: A tale to interoperate between WCF, Windows Phone 7 and Android&amp;lt;  &lt;p&gt;In un mondo dove la parola d'ordine è ""connected"", gli smartphone giocano un ruolo chiave. Sempre più siamo abituati ad interagire con l'informazione ovunque. Twitter, Facebook e servizi di vario genere, ormai consentono l'accesso attraverso dispositivi mobili. La parola chiave per rendere fruibili i nostri servizi? Interoperabilità. E' infatti chiaro che se un servizio non è interoperabile, si potrebbero precludere delle occasioni di marketing per determinati possessori di smartphone a vantaggio di altri. In questa sessione vedremo come realizzare un servizio WCF interoperabile, lo metteremo on line e svilupperemo due client che lo consumino: il primo per Windows Phone 7, ed il secondo per Android. Analizzeremo ambienti di sviluppo, tecniche, pro e contro degli approcci di ciascuna piattaforma, in una atmosfera di confronto produttivo.&lt;/p&gt; &lt;li&gt;Andrea Boschin - Programming with Reactive Extensions with .NET, Silverlight and WP7  &lt;p&gt;Le reactive extensions consentono la gestione semplificata di ObservableCollections e di stream di dati. In questa sessione vedremo le caratteristiche di questa libreria, disponibile per .NET Framework, Silverlight e Windows Phone con una serie di esempi.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110520"&gt;20/05/2011 - Programming DotNetNuke 5.0&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Andrea Dottor - Sviluppare con DotNetNuke. Un framework sul framework  &lt;p&gt;Sviluppare applicazioni, occupandosi delle sole funzionalità che vuole il cliente, senza doversi occupare anche del codice di infrastruttura può sembrare un'utopia, ma non è così. In questa sessione vedremo come DotNetNuke, che è un CMS (content management system) open source, permetta allo sviluppatore tutto ciò. DotNetNuke può essere visto come un framework sul framework, in grado di fornire allo sviluppatore funzionalità avanzate che permettono di aumentare la produttiva e al contempo di ridurne i tempi di sviluppo.&lt;/p&gt; &lt;li&gt;Davide Senatore - Fast and Furious DotNetNuke: Web App Development at the speed of light.  &lt;p&gt;DotNetNuke: semplicemente il CMS più diffuso al mondo con più di 6.000.000 di download totali e 600.000 siti in produzione. In questa sessione vedremo come si possa affrontare la sfida di creare web applications utilizzando DNN come piattaforma di sviluppo. Valuteremo come creare moduli, come integrarli all'interno del CMS e come sfuttare le caratteristiche native della piattaforma a nostro vantaggio. Analizzeremo le nuove caratteristiche, l'integrazione con JQuery e Google Analytics, la personalizzabilità estrema e la produttività straordinaria che questa piattaforma mette a disposizione.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20110610"&gt;10/06/2011 - Test &amp;amp; Tools Track&lt;/a&gt;&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Emanuele Delbono - Test Driving a MVVM Application  &lt;p&gt;Test Driven Development è sempre più utilizzato ma gli esempi che si trovano sui blog sono spesso troppo astratti per poter essere applicati al lavoro di tutti i giorni. Durante la sessione vedremo come applicare il TDD per realizzare un'applicazione WPF basata sul pattern MVVM. Vedremo come grazie al TDD potremo risparmiare molto tempo di debug e di prove reali dell'applicazione aggiungendo test dopo test le funzionalità richieste.&lt;/p&gt; &lt;li&gt;Federico Degrandis - Sterling: un database per Silverlight e Windows Phone 7  &lt;p&gt;Sterling è un database per Windows Phone 7 e Silverlight scritto da Jeremy Likness. Vedremo cos'è, come funziona e come lo possiamo utilizzare all'interno delle nostre applicazioni. Inoltre vedremo com'è possibile gestire alcune problematiche riscontrate su un progetto reale.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;hr&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4883084785798690092?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4883084785798690092/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2011/01/xedotnetprossimi-meeting.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4883084785798690092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4883084785798690092'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2011/01/xedotnetprossimi-meeting.html' title='XeDotNet–Prossimi Meeting'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8109960873479174536</id><published>2010-12-13T15:11:00.000-08:00</published><updated>2010-12-13T15:12:53.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><title type='text'>Unable to start debugging</title><content type='html'>&lt;p&gt;Alcuni giorni fa’ mi sono imbattuto in un problema abbastanza strano. Di colpo VS2008 non riusciva più a eseguire il debug di un’applicazione C++ su Windows CE riportando l’errore sibillino “unable to start debugging”. Come prima cosa ho incolpato il device che stavo utilizzando e sono passato su un altro tipo di device. Niente, stesso errore.  &lt;p&gt;Dopo parecchi minuti spesi in rete per cercare qualche lume inizio a leggere un po’ di post che parlano di qualche effetto collaterale dovuto all’installazione di phone 7 SDK su VS2010.  &lt;p&gt;In effetti, il codice su cui stavo cercando di eseguire il debug l’avevo scritto qualche mese fa, prima di installare tutto l’ambiente per windows phone 7. Cercando meglio nei post scopro che è legato proprio all’installazione di tale ambiente.  &lt;p&gt;Soluzioni ? Disinstallare VS2010 e/o reinstallare VS2008 ? Sono da clienti e di certo non posso permettermi di fare una cosa del genere!  &lt;p&gt;Scavando meglio in rete trovo altre persone che hanno lo stesso problema. Umm, nessuna soluzione se non reinstallare i vari ambienti di sviluppo.  &lt;p&gt;Alla fine trovo un &lt;a href="http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/7afdadc0-7e16-4018-85a8-a13fe9c4b8cb"&gt;post&lt;/a&gt; di &lt;a href="http://blogs.msdn.com/b/raffael/"&gt;Raffaele Limosani&lt;/a&gt; che spiega come effettuare un work-around “temporaneo” ed “accettabile”:  &lt;p&gt;1. rinominare la cartella C: \ Program Files \ Microsoft Visual Studio 10.0 \ SmartDevices \ Debugger \ target \ wce400 \ ARMV4i in .. \ armv4i_temp  &lt;p&gt;2. copiare la cartella C: \ Program Files \ Microsoft Visual Studio 9.0 \ SmartDevices \ Debugger \ target \ wce400 \ ARMV4i all'interno del percorso di Visual Studio 2010.  &lt;p&gt;Funziona !!!  &lt;p&gt;Comunque, come sempre di fronte a certe cose, non penso servano commenti.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8109960873479174536?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8109960873479174536/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/12/unable-to-start-debugging.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8109960873479174536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8109960873479174536'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/12/unable-to-start-debugging.html' title='Unable to start debugging'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-9220168408663525934</id><published>2010-12-06T05:12:00.001-08:00</published><updated>2010-12-06T05:12:38.637-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='XeDotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Codice e slide della sessione “Da Windows Mobile 6.5 a Windows Phone 7”</title><content type='html'>&lt;p&gt;Ecco disponibili al download, il codice e le slide del &lt;a href="http://www.xedotnet.org/"&gt;XeDotNet&lt;/a&gt; community meeting che ho tenuto il 03 Dicembre 2010 dal titolo &lt;strong&gt;Da Windows Mobile 6.5 q Windows Phone 7&lt;/strong&gt;.  &lt;ul&gt; &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WM65%5E_vs%5E_WP7/Slide%5E_WM65%5E_vs%5E_WP7.zip"&gt;Slide&lt;/a&gt;  &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WM65%5E_vs%5E_WP7/Sample%5E_WM65.zip"&gt;Codice WM 6.5&lt;/a&gt;  &lt;li&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.office.live.com/self.aspx/BlogFiles/XeDotNet%5E_WM65%5E_vs%5E_WP7/Sample%5E_WP7.zip"&gt;Codice WP 7&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;In questa sessione affronteremo le differenze principali tra le due versioni del s.o. Windows Mobile esplorando sia gli strumenti di sviluppo che le architetture. Verranno illustrati i punti in comune e non per preparare i nostri applicativi al passaggio verso il nuovo s.o. Nella sessione saranno esplorati poi i dettagli dell'architettura su cui si basa il nuovo s.o. Windows Phone&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Volevo porgere un ringraziamento a tutte le persone presenti al meeting ed in particolare ad &lt;a href="http://www.boschin.it/"&gt;Andrea Boschin&lt;/a&gt; per il supporto “tecnico e morale” e la condivisione della sessione. Grazie ancora a &lt;a href="http://www.xedotnet.org"&gt;XeDotNet&lt;/a&gt; per l’opportunità che mi è stata data.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-9220168408663525934?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/9220168408663525934/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/12/codice-e-slide-della-sessione-da.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9220168408663525934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9220168408663525934'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/12/codice-e-slide-della-sessione-da.html' title='Codice e slide della sessione “Da Windows Mobile 6.5 a Windows Phone 7”'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1709523019656592117</id><published>2010-11-30T13:48:00.001-08:00</published><updated>2010-11-30T13:48:46.253-08:00</updated><title type='text'>Pyxis 2.0 – an Operating Environment for NETMF</title><content type='html'>&lt;p/&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/netmfteam/archive/2010/11/29/pyxis-2-0-an-operating-environment-for-netmf.aspx"&gt;Vedere per credere!!!&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1709523019656592117?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1709523019656592117/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/11/pyxis-20-operating-environment-for.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1709523019656592117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1709523019656592117'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/11/pyxis-20-operating-environment-for.html' title='Pyxis 2.0 – an Operating Environment for NETMF'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4540526753119484960</id><published>2010-10-22T05:26:00.001-07:00</published><updated>2010-10-22T05:26:39.429-07:00</updated><title type='text'>XE.NET: Mobile Track</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Da Windows Mobile 6.5 a Windows Phone 7 Series&lt;/strong&gt;&lt;br&gt;In questa sessione affronteremo le differenze principali tra le due versioni del s.o. Windows Mobile esplorando sia gli strumenti di sviluppo che le architetture. Verranno illustrati i punti in comune e non per preparare i nostri applicativi al passaggio verso il nuovo s.o. Nella sessione saranno esplorati poi i dettagli dell’architettura su cui si basa il nuovo s.o. Windows Phone. &lt;br&gt;Speaker: &lt;a href="http://www.proxsoft.it"&gt;Mirco Vanini&lt;/a&gt; – Senior Consultant &lt;p&gt;&lt;strong&gt;Creare applicazioni per Windows Phone 7 Series con Silverlight &lt;/strong&gt;&lt;br&gt;In questa sessione affronteremo lo sviluppo con Windows Phone 7, con particolare riguardo alla realizzazione di applicazioni con Silverlight, lo strumento principale per lo sviluppo su questo nuovo dispositivo. La sessione indicherà come predisporre l'ambiente di sviluppo, quali sono gli strumenti di sviluppo e le basi da cui iniziare. &lt;br&gt;Speaker: &lt;a href="http://blog.boschin.it/"&gt;Andrea Boschin&lt;/a&gt; (MVP Silverlight) &lt;p&gt;Data: Venerdì 3 Dicembre 2010 &lt;br&gt;Ore: 19.30 &lt;br&gt;Luogo: Novotel Venezia Mestre Castellana – Via Alfredo Ceccherini 21 – 30174 Venezia Mestre &lt;p&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20101203"&gt;Iscrizione&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4540526753119484960?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4540526753119484960/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-mobile-track.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4540526753119484960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4540526753119484960'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-mobile-track.html' title='XE.NET: Mobile Track'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4422370192366823815</id><published>2010-10-22T05:24:00.001-07:00</published><updated>2010-10-22T05:24:01.379-07:00</updated><title type='text'>XE.NET: Virtual Meeting–F#</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Iniziare con F#&lt;/strong&gt;&lt;br&gt;In Visual Studio 2010 è apparso un nuovo linguaggio: F#. Cos'è, da dove nasce, come si scrive in F#. E perchè tanti lo stanno apprezzando più di C#... &lt;br&gt;Speaker: Marco Parenzan &lt;p&gt;Registrazione: 21:00:00 &lt;br&gt;Inizio: 21:30:00 &lt;br&gt;Località: Live Meeting online &lt;p&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20101119"&gt;Iscrizione&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4422370192366823815?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4422370192366823815/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-virtual-meetingf.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4422370192366823815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4422370192366823815'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-virtual-meetingf.html' title='XE.NET: Virtual Meeting–F#'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-97113740732084173</id><published>2010-10-22T05:21:00.001-07:00</published><updated>2010-10-22T05:21:59.503-07:00</updated><title type='text'>XE.NET: Microsoft Community Tour 2010/2–17.11.2010</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;09:30 – Keynote&lt;/strong&gt;&lt;br&gt;Speaker: &lt;a href="http://www.geniodelmale.info/"&gt;Lorenzo Barbieri&lt;/a&gt; - Microsoft Developer Evangelist  &lt;p&gt;&lt;strong&gt;10:10 - Windows Phone 7: Sviluppare applicazioni per il Marketplace &lt;br&gt;&lt;/strong&gt;In questa sessione vedremo lo sviluppo di applicazioni per il Marketplace di WP7, con esempi presi da applicazioni reali. &lt;br&gt;Speaker:&amp;nbsp; &lt;a href="http://www.geniodelmale.info/"&gt;Lorenzo Barbieri&lt;/a&gt; - Microsoft Developer Evangelist&amp;nbsp; &lt;p&gt;&lt;strong&gt;11:35 - Make javascript Simple with jQuery&lt;/strong&gt;&lt;br&gt;La costante richiesta di interfacce rich nella applicazioni internet sta spingendo sempre più l'adozione di librerie Javascript che facilitino la programmazione con questo linguaggio che per molti versi è ostico, almeno quanto flessibile. jQuery ormai si è guadagnato la palma di migliore e maggiormente adottata libreria, con un core molto snello e una serie di plugin di grande efficacia che aiutano molto il programmatore quando l'ambiente non consente l'uso di più moderni strumenti RIA. In questa sessione affronteremo jQuery, cercando di comprendere i principi che stanno alla base del suo funzionamento vedendoli applicati in un piccolo gioco sviluppato in appena 100 righe di codice. Vedremo come jQuery porti sollievo a molti dei problemi di Javascript e perchè no anche quali sono i confini entro cui la sua efficacia viene meno. &lt;br&gt;Speaker: &lt;a href="http://blog.boschin.it/"&gt;Andrea Boschin&lt;/a&gt; - MVP Silverlight  &lt;p&gt;&lt;strong&gt;14:15 - Windows Azure: Getting Started &lt;br&gt;&lt;/strong&gt;Iniziamo a mettere la testa tra le nuvole esplorando l'offerta Microsoft per il Cloud Computing. Windows Azure, SQL Azure e Windows Azure AppFabbric offrono allo sviluppatore un modo nuovo di disegnare le proprie applicazioni garantendo maggior disponibilità, scalabilità e manutenibilità a costi inferiori rispetto a quanto ottenibile con approcci di sviluppo e distribuzione tradizionali. Cosa sono e come si utilizzano sono gli aspetti su cui si baserà questa sessione con l'intento finale di mostrare ai partecipanti come iniziare a utilizzare questa piattaforma. &lt;br&gt;Speaker: &lt;a href="https://mvp.support.microsoft.com/profile/Davide.Vernole"&gt;Davide Vernole&lt;/a&gt; – MVP Visual Studio ALM  &lt;p&gt;&lt;strong&gt;15:25 - XBAP Application with WPF 4.0&lt;/strong&gt;&lt;br&gt;Le applicazioni browser XAML (XBAP) combinano le funzionalità delle applicazioni Web e delle applicazioni rich client. In modo analogo alle applicazioni Web, le applicazioni XBAP possono essere distribuite in un server Web e avviate da Internet Explorer o Firefox. Come le applicazioni rich client, le applicazioni XBAP possono trarre vantaggio dalle funzionalità di WPF. In questa sessione vedremo un'introduzione allo sviluppo di applicazioni XBAP e vengono illustrate le differenze esistenti tra lo sviluppo di questo tipo di applicazioni e lo sviluppo di applicazioni rich client standard. &lt;br&gt;Speaker: &lt;a href="http://blogs.ugidotnet.org/dsenatore/Default.aspx"&gt;Davide Senatore&lt;/a&gt; - MVP Client App Dev  &lt;p&gt;&lt;strong&gt;16:50 - Potenzialità e benefici di ASP.NET MVC&lt;/strong&gt;&lt;br&gt;ASP.NET MVC è un framework sviluppato da Microsoft che permette lo sviluppo di applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern si propone di apportare alcuni benefici: maggiore controllo del markup della pagina, URL più leggibili, facilità di integrazione con librerie javascript, chiara separazione dei ruoli/responsabilità tra layer, testabilità e manutenzione del codice... In questa sessione cercheremo di capire quali siano gli effettivi vantaggi che ASP.NET MVC porta agli sviluppatori, e quindi capire, con un occhio pratico, quali reali benefici si abbiano nell'adottare questa tecnologia. &lt;br&gt;Speaker: &lt;a href="http://blog.dottor.net/"&gt;Andrea Dottor&lt;/a&gt; - MVP ASP.NET  &lt;p&gt;Registrazione: 09:00:00 &lt;br&gt;Inizio: 09:30:00 &lt;br&gt;Località: Hotel Holiday Inn, Marghera (VE) &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032464065&amp;amp;Culture=it-IT"&gt;Iscrizione&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-97113740732084173?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/97113740732084173/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-microsoft-community-tour.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/97113740732084173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/97113740732084173'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-microsoft-community-tour.html' title='XE.NET: Microsoft Community Tour 2010/2–17.11.2010'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7520128118928787230</id><published>2010-10-22T05:06:00.001-07:00</published><updated>2010-10-22T05:06:30.891-07:00</updated><title type='text'>XE.NET: Quality Track</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft Test Manager &lt;br&gt;&lt;/strong&gt;Pianificare, testare e tracciare le attività di testing non è mai stato così completo. Visual Studio 2010 introduce un nuovo approccio alle attività compiute dai tester di applicazioni facilitando la stima di questa delicata parte del ciclo di vita del software. Durante la sessione impareremo a conoscere un nuovo compagno di avventura, Microsoft Test Manager (MTM), in grado di risolvere molti dei problemi che hanno da sempre afflitto il processo di test e bug fixing. Perfettamente integrato con Team Foundation Server 2010 è destinato ad essere uno strumento indispensabile per la creazione di software di qualità. &lt;br&gt;Speaker: &lt;a href="https://mvp.support.microsoft.com/profile/Davide.Vernole"&gt;Davide Vernole&lt;/a&gt; (MVP Visual Studio ALM)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ottimizzazione di un'applicazione ASP.NET &lt;br&gt;&lt;/strong&gt;Nelle applicazioni di tutti i giorni, spesso ci scontriamo con problemi di performance, oppure siamo alla ricerca di un miglioramento che possa rendere più reattiva la nostra applicazione. In questa sessione vedremo come grazie all'utilizzo della cache, session, ed altri strumenti, possiamo ottimizzare il nostro sito fornendo un feedback migliore all'utente. Con esempi pratici, vedremo il beneficio di come semplici accortezze potranno migliorare notevolmente un'applicazione. Cache, session, IIS 7, routing...saranno i principali argomenti trattati. &lt;br&gt;Speaker: &lt;a href="http://blog.dottor.net/"&gt;Andrea Dottor&lt;/a&gt; (MVP ASP.NET) &lt;p&gt;Data: Giovedì 4 Novembre 2010 &lt;br&gt;Ore: 19.30 &lt;br&gt;Luogo: Novotel Venezia Mestre Castellana – Via Alfredo Ceccherini 21 – 30174 Venezia Mestre &lt;p&gt;&lt;a href="http://www.xedotnet.org/Home/Meeting/20101105"&gt;Informazioni - Iscrizioni&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7520128118928787230?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7520128118928787230/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-quality-track.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7520128118928787230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7520128118928787230'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/xenet-quality-track.html' title='XE.NET: Quality Track'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4108460983049248911</id><published>2010-10-17T06:59:00.001-07:00</published><updated>2010-10-17T06:59:42.487-07:00</updated><title type='text'>A volte ritornano…</title><content type='html'>&lt;p align="justify"&gt;Dopo molti mesi ritorno a scrivere sul blog, nuovo blog e nuova avventura. Per una serie di circostanze sia familiari sia lavorative non ho più curato quest’attività, non ultimo la chiusura inattesa e non conosciuta del blog ugimobile che mi ospitava. Grazie all’aiuto di &lt;a href="http://www.boschin.it/"&gt;Andrea&lt;/a&gt; sono riuscito a recuperare un po’ di articoli che avevo scritto nel tempo, perdendone tanti tanti altri. Sinceramente non capisco il comportamento di alcune persone e le motivazioni che hanno portato alla chiusura di ugimobile, ma questa è un’altra storia. Bene non mi resta che tirarmi su le maniche e riiniziare a scrivere. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4108460983049248911?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4108460983049248911/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/volte-ritornano.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4108460983049248911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4108460983049248911'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/volte-ritornano.html' title='A volte ritornano…'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4503242429347011574</id><published>2010-10-17T06:50:00.001-07:00</published><updated>2010-10-17T06:50:08.957-07:00</updated><title type='text'>.NET Micro Framework 4.0 Download</title><content type='html'>&lt;p&gt;Alcuni giorni fà è stata rilasciata la versione 4.0 del .NET Micro Framework. Questa è la prima release dopo il trasferimento del gruppo sotto la Developer Division. La versione ha un certo numero di nuove funzionalità. In questo &lt;a href="http://blogs.msdn.com/netmfteam/archive/2009/11/15/net-micro-framework-version-4-0-ships-open-source-community-development-and-more.aspx#9922983"&gt;link&lt;/a&gt; potete trovare la lista completa. &lt;p&gt;Il donload è diviso in diversi pacchetti, in dettaglio: &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=77dbfc46-14a1-4dcf-a809-eda7ccfe376b"&gt;.NET Micro Framework 4.0 SDK&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=5bc87a35-747e-42ff-bf2e-8a8c8fefa906"&gt;.NET Micro Framework 4.0 CRYPTO&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=16fa5d31-a583-4c0d-af74-f4d5e235d5bc"&gt;.NET Micro Framework 4.0 Porting Kit&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=d42cc867-56a8-4daa-93a0-f14219baf282"&gt;.NETMF4 NET ARM&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9e608104-6d7d-430a-b1d4-c992030dd0c4"&gt;.NETMF4 NET THUMB2&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=4aab7dbf-1840-4fa9-b7d3-889fcd94aabd"&gt;.NETMF4 NET THUMB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Penso che sia la risposta più “concreta” a chi dava il progetto Micro FW sul viale del tramonto.   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4503242429347011574?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4503242429347011574/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/net-micro-framework-40-download.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4503242429347011574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4503242429347011574'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/net-micro-framework-40-download.html' title='.NET Micro Framework 4.0 Download'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-976151352207286318</id><published>2010-10-17T06:49:00.001-07:00</published><updated>2010-10-17T06:49:24.714-07:00</updated><title type='text'>Microsoft Silverlight for Windows Embedded</title><content type='html'>&lt;p&gt;Con il rilascio di &lt;a href="http://www.microsoft.com/windowsembedded/en-us/news/pressreleases/cer3_release.mspx"&gt;Windows CE SR3&lt;/a&gt; una delle features più interessanti è la disponibilità di &lt;a href="http://www.microsoft.com/windowsembedded/en-us/products/windowsce/silverlightforwe.mspx"&gt;Silverlight for Windows Embedded&lt;/a&gt;. Attenzione è un UI framework che si basa su API Win32/nativo e non su codice gestito.&amp;nbsp; &lt;p&gt;&lt;img src="http://www.ugimobile.org/aggbug.aspx?PostID=672" width="1" height="1"&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-976151352207286318?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/976151352207286318/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/microsoft-silverlight-for-windows.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/976151352207286318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/976151352207286318'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/microsoft-silverlight-for-windows.html' title='Microsoft Silverlight for Windows Embedded'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-913980082236170423</id><published>2010-10-17T06:48:00.003-07:00</published><updated>2010-10-17T06:48:47.399-07:00</updated><title type='text'>WiFi 802.11 Wireless for .NET Micro FW</title><content type='html'>&lt;p&gt;GHI ha annunciato il primo modulo hardware &lt;a href="http://www.ghielectronics.com/product/127"&gt;“Micro Famework WiFi Expansion”&lt;/a&gt; che rende disponibile una connessione WiFi su .Net Micro FW 3.0. Il nuovo modulo supporta WEP, WPA, WPA2 attraverso la cifratura hw AES e RSA. il modulo è disponibile per i seguenti prodotti di GHI: ChipworkX ed Embedded Master&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-913980082236170423?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/913980082236170423/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/wifi-80211-wireless-for-net-micro-fw.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/913980082236170423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/913980082236170423'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/wifi-80211-wireless-for-net-micro-fw.html' title='WiFi 802.11 Wireless for .NET Micro FW'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-858574936933147167</id><published>2010-10-17T06:48:00.001-07:00</published><updated>2010-10-17T06:48:08.453-07:00</updated><title type='text'>“Expert .NET Micro Framework” – Second edition</title><content type='html'>E’ disponibile la seconda edizione del libro “Expert .NET Micro Framework” di Jens Kühner. (&lt;a href="http://www.apress.com/book/view/1430223871"&gt;Apress&lt;/a&gt; – &lt;a href="http://www.amazon.com/Expert-NET-Micro-Framework-Second/dp/1430223871/ref=sr_1_3?"&gt;Amazon&lt;/a&gt;)    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-858574936933147167?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/858574936933147167/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/expert-net-micro-framework-second.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/858574936933147167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/858574936933147167'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/expert-net-micro-framework-second.html' title='“Expert .NET Micro Framework” – Second edition'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4513221241023249578</id><published>2010-10-17T06:43:00.001-07:00</published><updated>2010-10-17T06:43:29.328-07:00</updated><title type='text'>VS2008: Errore connessione a un dispositivo Windows CE senza ActiveSync</title><content type='html'>&lt;p&gt;Chi sviluppa su device Windows CE avrà sicuramente letto ed utilizzato la procedura per stabilire una connessione verso un dispositivo Windows CE senza ActiveSync riportata nel seguente articolo &lt;a href="http://msdn2.microsoft.com/it-it/library/ms228708(VS.80).aspx"&gt;(Procedura stabilire una connessione a un dispositivo Windows CE senza ActiveSync)&lt;/a&gt;. Niente da dire, anzi se non che dopo l'installazione di VS 2008 sullo stesso PC in cui è installato VS 2005 ogni tentativo di stabile una connessione verso il device riporta i seguenti errori:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;strong&gt;VS 2005&lt;/strong&gt;&lt;/em&gt; &lt;/em&gt;Connection failed:0x8973151A&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;VS 2008&lt;/strong&gt; &lt;/em&gt;Connection failed: The version of Comman client running on the device is incompatible with the desktop. Boostrap the device with desktop compatible device binaries and try connectiong again.&lt;/p&gt; &lt;p&gt;Dopo alcuni tentativi e ricerche infruttuose su internet ho trovato il bandolo della matassa. La parte inerente il device emulator di VS 2008 non è installabile side by side, in altre parole la versione di VS 2005 viene sovrascritta da quella di VS 2008.&lt;/p&gt; &lt;p&gt;Per ovviare il problema basta copiare nel dispositivo i files aggiornati da VS 2008 contenuti nel percorso.&lt;/p&gt; &lt;p&gt;C: \Programmi\File comuni\Microsoft Shared\CoreCon\1.0\Target\wce400\&amp;lt;CPU&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4513221241023249578?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4513221241023249578/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/vs2008-errore-connessione-un.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4513221241023249578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4513221241023249578'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/vs2008-errore-connessione-un.html' title='VS2008: Errore connessione a un dispositivo Windows CE senza ActiveSync'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-6532268579672529372</id><published>2010-10-17T06:42:00.003-07:00</published><updated>2010-10-17T06:42:48.593-07:00</updated><title type='text'>Embedded Master Development System</title><content type='html'>&lt;p&gt;Finalmente è arrivata!&lt;/p&gt; &lt;p&gt;Alla fine mi sono deciso a comprarla (&lt;a href="http://www.ghielectronics.com/details.php?id=107"&gt;GHI Electronics - Embedded Master Development System&lt;/a&gt;), l'ho aperta da qualche giorno e devo dire che il rapporto qualità prezzo mi ha soddisfatto. La confezione si presenta scarna ma il "contenuto" è sicuramente all'altezza delle aspettative. &lt;/p&gt; &lt;p&gt;Dopo l'installazione del .NET Micro Framework ho ovviamente installato EmbeddedMasterSDK della scheda, non presente nella confezione ma scaricato dal sito. Il setup è andato al primo colpo senza intoppi e/o sorprese. La documentazione e gli esempi forniti nel SDK sono sufficientemente completi, anche se come al solito la documentazione non è mai abbastanza :)&lt;/p&gt; &lt;p&gt;Dopo un pò di prove con il .NET Micro Framework Deployment Tool sono riuscito a stabilire la connessione tra il PC e la scheda. L'unico intoppo l'ho trovato nell'installazione del Virtual Com Port Drive per la parte di debug, dopo vari tentati di collegamento andati a vuoto ho scoperto che dovevo cambiare il tempo di latenza (da 16 msec a 1 msec) nell'impostazioni della USB Serial Port.&lt;/p&gt; &lt;p&gt;Ho scaricato poi le varie patch sia del TinyBooter e del TinyCLR dal sito del costruttore della scheda e le ho installate senza grossi problemi. Gli steps per l'upgrade sono spiegati in dettaglio nella documentazione del SDK.&lt;/p&gt; &lt;p&gt;Ho poi caricati gli esempi forniti con SDK, compilati, distribuiti e debbugati direttamente sulla scheda. Anche l'emulatore fornito con SDK non è malaccio, tanta scena ma manca tutta la gestione degli I/O della scheda. Sarebbe stato comodo avere un sistema di emulazione degli I/O senza andare per forza su HW&lt;/p&gt; &lt;p&gt;Bene, adesso sono finalmente pronto a scrivere il mio primo programma su .NET Micro FW.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-6532268579672529372?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/6532268579672529372/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/embedded-master-development-system.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6532268579672529372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/6532268579672529372'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/embedded-master-development-system.html' title='Embedded Master Development System'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8368055840610409103</id><published>2010-10-17T06:42:00.001-07:00</published><updated>2010-10-17T06:42:15.389-07:00</updated><title type='text'>Expert .Net Micro Framework</title><content type='html'>&lt;p&gt;Dopo aver acquistato il kit di sviluppo &lt;a href="http://www.ghielectronics.com/details.php?id=107"&gt;GHI Electronics - Embedded Master Development System&lt;/a&gt; ho pensato bene di acquistare un libro dedicato al .NET Micro Framework. Devo dire che sul mercato non c'è tantissimo e alla fine ho deciso di acquistare il libro di &lt;a href="http://bloggingabout.net/blogs/jens/default.aspx"&gt;Jens Kühner&lt;/a&gt; - &lt;a href="http://www.apress.com/book/view/159059973x"&gt;Expert .Net Micro Framework&lt;/a&gt;. Devo dire la verità, sin dall'inizio mi è piaciuto. &lt;/p&gt; &lt;p&gt;Essendo un amante dei libri cartacei ricevere un libro con copertina rigida, rilegato in modo che non si sfaldi dopo le seconda lettura e stampato su della carta di qualità discreta fa solo che piacere. Oltre all'impressione "estetica" e "fisica" devo dire che è un buon libro, strutturato bene, che prende per mano il lettore e lo porta ad esaminare le varie parti del .Net Micro FW. &lt;/p&gt; &lt;p&gt;Si parte dalla genesi del Micro FW, ne descrive le varie parti costituenti e fà una rapida carellata sui kit di sviluppo attualmente disponibili. Questa è solo l'introduzione del libro, poi si passa alla "sostanza". Descrive in modo accurato la gestione delle varie porte hardware, il threading disponibile, la crittografia, la comunicazione via socket, per poi arrivare al DPWS (Device Profile for Web Service). Devo dire che forse è il capitolo che mi ha entusiasmato di più, anche se per poterlo utilizzare si deve scrivere un bel pò di codice.&lt;/p&gt; &lt;p&gt;Si arriva poi alla gestione della localizzazione e sopratutto alla parte di gestione grafica e di user interface. Anche questo capito è degno di nota sopratutto per i semplici ma efficaci esempi riportati.&lt;/p&gt; &lt;p&gt;Ultima parte ma non per questo meno importante è la gestione dell'emulazione hardware e dei relativi componenti. Ben scritta e documentata sopratutto negli esempi di implementazione di componenti per l'emulazione hardware.&lt;/p&gt; &lt;p&gt;Che dire ? Sicuramente è un libro ben fatto ed indispensabile per chi vuole partire ed approffondire lo sviluppo con .Net Micro FW. &lt;/p&gt; &lt;p&gt;Buona lettura a tutti &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:388374ba-fd13-47f6-9a15-e0698d169fd4" class="wlWriterSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/book" rel="tag"&gt;book&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.Net%20Micro%20FW" rel="tag"&gt;.Net Micro FW&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8368055840610409103?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8368055840610409103/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/expert-net-micro-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8368055840610409103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8368055840610409103'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/expert-net-micro-framework.html' title='Expert .Net Micro Framework'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-9125897414139125280</id><published>2010-10-17T06:41:00.001-07:00</published><updated>2010-10-17T06:41:33.783-07:00</updated><title type='text'>AddHeader - ISAPI</title><content type='html'>&lt;p&gt;Durante lo sviluppo di una ISAPI filter mi è capitata la necessità di creare una variabile server IIS durante la gestione della notifica SF_NOTIFY_AUTHENTICATION.  &lt;p&gt;Peccato che in questa notifica il parametro pvNotification passato da IIS sia di tipo PHTTP_FILTER_AUTHENT e non vi sia il modo di recuperare la struttura di tipo PHTTP_FILTER_PREPROC_HEADERS che contiene il metodo AddHeader.  &lt;p&gt;Dopo un po' di tentativi ho percorso questa strada:  &lt;p&gt;&amp;nbsp; &lt;p&gt;1. Definisco i seguenti typedef e define&lt;/p&gt; &lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt; &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#define&lt;/span&gt; MYISAPI_HEADER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #006080"&gt;"MYISAPI-HEADER:"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#define&lt;/span&gt; HTTP_MYISAPI_HEADER    &lt;span style="color: #006080"&gt;"HTTP_MYISAPI_HEADER"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; typedef BOOL (WINAPI * PAddHeader) &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;               (&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;struct&lt;/span&gt; _HTTP_FILTER_CONTEXT * pfc,&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                 LPSTR                         lpszName,&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;                 LPSTR                         lpszValue&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;               );&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;2. Nella notifica SF_NOTIFY_PREPROC_HEADERS creo una variabile server che contiene l'indirizzo del metodo AddHeader come nel codice seguente&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; TCHAR szTmp[256];&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; sprintf_s(szTmp, &lt;span style="color: #0000ff"&gt;sizeof&lt;/span&gt;(szTmp), &lt;span style="color: #006080"&gt;"%08lx"&lt;/span&gt;, ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)-&amp;gt;AddHeader);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)-&amp;gt;HttpStatus == 0)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     TCHAR szValue[256];&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     DWORD dwValue = &lt;span style="color: #0000ff"&gt;sizeof&lt;/span&gt;(szValue);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     *szValue = 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)-&amp;gt;GetHeader(pfc, MYISAPI_HEADER, szValue, &amp;amp;dwValue);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(*szValue == 0)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)-&amp;gt;AddHeader(pfc, MYISAPI_HEADER, szTmp);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;(SF_STATUS_REQ_NEXT_NOTIFICATION);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;3. Nella notifica SF_NOTIFY_AUTHENTICATION utilizzo la variabile server creata precedentemente nella notifica SF_NOTIFY_PREPROC_HEADERS, eseguo il cast su il pointer a funzione definito nel typedef e la richiamo per impostare una nuova variabile server&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; TCHAR szValue[256];&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; DWORD dwValue = &lt;span style="color: #0000ff"&gt;sizeof&lt;/span&gt;(szValue);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; *szValue = 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; pfc-&amp;gt;GetServerVariable(pfc, HTTP_MYISAPI_HEADER, szValue, &amp;amp;dwValue);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(*szValue != 0)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         PAddHeader pHeader = (PAddHeader)strtoul(szTmp, NULL, 16);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(pHeader)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;            (pHeader)(pfc, MYISAPI_USER_ID_LDAP, W2A(pszUidLdap));    &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;(CException *e)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         DumpException(e)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         e-&amp;gt;Delete();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Funziona :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-9125897414139125280?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/9125897414139125280/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/addheader-isapi.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9125897414139125280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/9125897414139125280'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/addheader-isapi.html' title='AddHeader - ISAPI'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-1956722198147184643</id><published>2010-10-17T06:40:00.001-07:00</published><updated>2010-10-17T06:40:40.026-07:00</updated><title type='text'>System Meter Chart PDA</title><content type='html'>&lt;p&gt;Durante lo sviluppo di un progetto mi sono imbattuto nella necessità di realizzare un controllo per PDA che rapresentasse l'andamento di un valore nel tempo. Come "fonte di ispirazione" ho utilizzato la visualizzazione della "cronologia utilizzo CPU" del task manager. &lt;/p&gt; &lt;p&gt;Dopo un pò di lavoro sono riuscito a "confezionare" un controllo che ne mima il comportamento. Ho esteso un pò il grafico prodotto permettendo la gestione dello stesso sia tramite line che stick. &lt;/p&gt; &lt;p&gt;Il controllo utilizza un sistema di&amp;nbsp; "Double Buffering" con una bitmap offline in cui viene effettivamente disegnato il grafico. Questo ovviamente per evitare il flickering che inevitabilmente sarebbe comparso. &lt;/p&gt; &lt;p&gt;Tutto questo perchè su .Net CF i controls non supportano il double buffer nativamente, per esempio in .Net è possibile attivarlo tramite il seguente codice:&lt;/p&gt; &lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt; &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; EnableDoubleBuffering()&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;    &lt;span style="color: #008000"&gt;// Set the value of the double-buffering style bits to true.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SetStyle(ControlStyles.DoubleBuffer | &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;                  ControlStyles.UserPaint | &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;                  ControlStyles.AllPaintingInWmPaint,&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;                  &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.UpdateStyles();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Di seguito riporto un print screen del programma demo e il link in cui trovare il medesimo.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://edi8jg.bay.livefilestore.com/y1pTihNk2DSh8A8b4l5WsskF-fQbaSg8beMAqC9KkEEd-RSVCZvbMfLmss2DgP1xk7RR_tD5zak-Oo/SystemMeterChartPDA.png"&gt;&lt;img src="http://edi8jg.bay.livefilestore.com/y1pTihNk2DSh8A8b4l5WsskF-fQbaSg8beMAqC9KkEEd-RSVCZvbMfLmss2DgP1xk7RR_tD5zak-Oo/SystemMeterChartPDA.png"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://cid-afd1bdc9b805cf1c.skydrive.live.com/self.aspx/BlogFiles/SystemMeterChartPDA.zip"&gt;Sorgenti Progetto di esempio&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Buone "misurazioni" a tutti :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-1956722198147184643?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/1956722198147184643/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/system-meter-chart-pda.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1956722198147184643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/1956722198147184643'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/system-meter-chart-pda.html' title='System Meter Chart PDA'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-4767082148045561874</id><published>2010-10-17T06:39:00.003-07:00</published><updated>2010-10-17T06:39:58.204-07:00</updated><title type='text'>ActiveSync - GuestOnly</title><content type='html'>&lt;p&gt;Chi collega e scollega device tutto il giorno al proprio PC, si sarà chiesto se vi è la possibilità di disattivare la richiesta di creazione relazione da parte di ActiveSync. Sicuramente l'impostazione di relazione va bene per sincronizzare mail, appuntamenti, ecc. ma non sicuramente per le sessioni di debug.&lt;/p&gt; &lt;p&gt;Ecco allora la chiave del registry da modificare:&lt;/p&gt; &lt;p&gt;[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows CE Services]&lt;br&gt;"GuestOnly"=dword:1  &lt;p&gt;Ovviamente per ripristinare la richiesta di relazione basta impostare "GuestOnly a 0 (zero) &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-4767082148045561874?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/4767082148045561874/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/activesync-guestonly.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4767082148045561874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/4767082148045561874'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/activesync-guestonly.html' title='ActiveSync - GuestOnly'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-486206085673267373</id><published>2010-10-17T06:39:00.001-07:00</published><updated>2010-10-17T06:39:23.792-07:00</updated><title type='text'>Community Meeting - .NET Compact Framework</title><content type='html'>&lt;p&gt;Volevo ringraziare tutti i partecipanti, &lt;a href="http://www.xedotnet.org"&gt;Xe.Net&lt;/a&gt; ed &lt;a href="http://www.1nn0va.net/"&gt;1nn0va&lt;/a&gt; per l'opportunità che mi hanno concesso. A breve metterò in linea il materiale del meeting. &lt;/p&gt; &lt;p&gt;Come sempre un ringraziamento "speciale" ad &lt;a href="http://blog.boschin.it/Default.aspx"&gt;Andrea Boschin&lt;/a&gt; per il supporto materiale e morale.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-486206085673267373?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/486206085673267373/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/community-meeting-net-compact-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/486206085673267373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/486206085673267373'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/community-meeting-net-compact-framework.html' title='Community Meeting - .NET Compact Framework'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-8546804736503517229</id><published>2010-10-17T06:38:00.001-07:00</published><updated>2010-10-17T06:38:36.724-07:00</updated><title type='text'>DLL - Import</title><content type='html'>&lt;p&gt;Se dovete collegare codice nativo e/o Win32 API a C# / VB.NET consiglio vivamente questo &lt;a href="http://www.pinvoke.net/"&gt;sito&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-8546804736503517229?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/8546804736503517229/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/dll-import.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8546804736503517229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/8546804736503517229'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/dll-import.html' title='DLL - Import'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-7151305316278557353</id><published>2010-10-17T06:37:00.001-07:00</published><updated>2010-10-17T06:37:25.577-07:00</updated><title type='text'>System Meter Chart – .Net Micro Framework</title><content type='html'>&lt;p&gt;Finalmente in questi giorni di “festa” sono riuscito a trovare qualche ora di calma da famiglia, figlie, clienti, rogne, ecc. per effettuare il porting del controllo &lt;a href="http://www.ugimobile.org/blogs/mircovanini/archive/2008/11/07/system-meter-chart-pda.aspx"&gt;System Meter Chart&lt;/a&gt; da .NET Compact Framework (CF) a .NET Micro Framework (MF). Questa è stata una buona occasione per “toccare con mano” le diversità tra i due ambienti per quello che riguarda la progettazione di user control. Il .NET MF supporta una versione ridotta (molto) di WPF e la gestione / progettazione dei controlli ovviamente è diversa tra i due ambienti. Nel caso specifico (.NET MF) ho implementato un Control (UIElement) che si espone come oggetto WPF.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img src="http://5ataga.bay.livefilestore.com/y1prGyAmHd_BXBXlIAHRPj2VMqFKqXh2scMFl4RlcAV1htDguV-mg0GgDlwR-l1BTUskq3UY3-ptjZ5d8qzU38hrQ/class.png"&gt; &lt;/p&gt; &lt;p&gt;Nelle applicazioni MF con presentation esistono due thread, il primo creato del programma per la gestione degli I/O, periferiche, ecc. mentre il secondo è creato ed utilizzato internamente dal CLR per le varie operazioni di UI (ridisegno degli elementi di UI come i controlli, le finestre, ecc.). Questo secondo thread è chiamato anche Dispatcher e il suo scopo è quello di accedere in modo “sicuro” ai vari elementi della UI. Per maggiori informazioni vi consiglio di leggere &lt;a href="http://blogs.msdn.com/netmfteam/archive/2008/03/04/using-the-dispatcher.aspx"&gt;'Using the Dispatcher’&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;L’esempio di utilizzo del controllo usa un timer per l’assegnazione di valori random da 0 a 100. Essendo il timer asincrono rispetto all’interfaccia utente, per le operazioni di invalidate interne del controllo, è necessario chiamare BeginInvoke&amp;nbsp; per far si che il controllo grafico sia acceduto dal thread principale. La scelta di BeginInvoke è preferibile rispetto a Invoke così da poter liberare il thread del timer al più presto senza attendere il termine dell’esecuzione del gestore dell’evento. &lt;/p&gt; &lt;p&gt;L’esempio utilizza i 5 tasti presenti nell’emulatore del .NET MF, in dettaglio:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Tasto Up abilita la visualizzazione in “Stick Mode”  &lt;li&gt;Tasto Down abilita la visualizzazione in “Line Mode”  &lt;li&gt;Tasto Left abilita la visualizzazione in “NoGrid”  &lt;li&gt;Tasto Right abilita la visualizzazione in “Grid”  &lt;li&gt;Tasto Select abilita / disablita la visualizzazione del Gradient &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Di seguito riporto alcune immagini delle modalità supportate dal controllo&lt;/p&gt; &lt;p&gt;&lt;img src="http://5ataga.bay.livefilestore.com/y1pvEsgywgD3TTzctK8U7XpV39Zy5xr2NN4NkVELp4fVmjidWAZxGev6PzqVdPz0xSTzxZKYnB2sDQ/view1.png" width="336" height="270"&gt; &lt;/p&gt; &lt;p&gt;&lt;img src="http://5ataga.bay.livefilestore.com/y1pZIYVUt7dEb-qNUS-7qv94xIg5apvsOkPXLmybvngOtZmT7_xbmEwEv5HjP84JElzP16KnKOwEC0/view2.png"&gt; &lt;/p&gt; &lt;p&gt;&lt;img src="http://5ataga.bay.livefilestore.com/y1p0GPymen4XEQExoNW4pUsPT7pfo7tpuVnbjTUbwbVK6_2NTexTvdkL0DtdIDMisnVbTfdJkhGo-Q/view3.png"&gt; &lt;/p&gt; &lt;p&gt;&lt;img src="http://5ataga.bay.livefilestore.com/y1p0kDGj9QZKP6IU-xb4ZEB8w6A6IyisW5-x_HuPGXbRLxfrYaKZzj7fMobAnwmWZ0BiudqkdVSe8E/view4.png"&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Non nego che sono sempre più entusiasta del MF, penso solo a quanto codice avrei dovuto scrivere per realizzare lo stesso controllo su un’altra tipo di scheda non MF magari con un compilatore C++ proprietario. Seconda osservazione, la portabilità del codice da una piattaforma MF all’altra, infatti nell’esempio non ho utilizzato nulla di proprietario della mia scheda &lt;a href="http://www.ghielectronics.com/details.php?id=107&amp;amp;sid=114"&gt;GHI&lt;/a&gt; ma solo chimate “standard” del MF 3.0. Come ultimo punto vorrei rimarcare l’integrazione del MF con Visual Studio,&amp;nbsp; si riesce a sviluppare ed eseguire il debugging dell’applicazione sia con l’emulatore che direttamente sulla scheda collegata via USB. Questo permette l’analisi sotto debugger di scenari che difficilmente sarebbero ripetibili tramite un emulatore e con una serie di comodità come solo i progammatori di Visual Studio sono abituati.&amp;nbsp; Ovviamente le schede che supportano MF non sono schede su cui la battaglia si gioca sui centesimi ma quello che da a disposizione MF ripaga anche il relativo costo. &lt;/p&gt; &lt;p&gt;In questo &lt;a href="http://cid-afd1bdc9b805cf1c.skydrive.live.com/self.aspx/BlogFiles/SystemMeterChartMF/SystemMeterChartMF.zip"&gt;link&lt;/a&gt; potete scaricare lo zip dei sorgenti del programma di esempio.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-7151305316278557353?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/7151305316278557353/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/system-meter-chart-net-micro-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7151305316278557353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/7151305316278557353'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/system-meter-chart-net-micro-framework.html' title='System Meter Chart – .Net Micro Framework'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4286655782640742058.post-3340564790297906374</id><published>2010-10-17T06:36:00.001-07:00</published><updated>2010-10-17T06:36:32.833-07:00</updated><title type='text'>GDI – Leak – WinCE – C#</title><content type='html'>&lt;p&gt;Suona strano avere dei memory leak in codice gestito ma sono molto più frequenti di quello che si possa pensare. Alcune settimane fà ho tenuto una sessione di code review presso un mio cliente e ho speso alcuni giorni a sistemare diversi memory leak su una programma scritto in C# per Windows CE.&lt;/p&gt; &lt;p&gt;Quello che bisogna tenere a mente che tutti gli oggetti GDI (Bitmap, Font, Brush, Pen, ecc.) di C# in realtà sono dei wrapper sopra oggetti Win32. Tali oggetti sono referenziati tramite Handle e &lt;u&gt;devono essere rilasciati.&lt;/u&gt; Il GC non lo fà per voi in modo automatico perchè semplicemente non li può gestire. Sopratutto nelle applicazioni mobile, in cui le risorse sono limitate, bisogna porre particolare attenzione a questo.&lt;/p&gt; &lt;p&gt;Durante la sessione di debug ho utilizzato questo tool (&lt;a href="http://www.nirsoft.net/utils/gdi_handles.html"&gt;GDIView&lt;/a&gt;) che mi ha aiutato a verificare quali handle non venivano rilasciati. &lt;/p&gt; &lt;p&gt;Alcuni consigli pratici:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Richiamare sempre il Dispose di tutti gli oggetti grafici utilizzati, meglio ancora usare sempre la keword “using” per richiamare sempre in modo implicito il Dispose, esempio: &lt;/li&gt;&lt;/ul&gt; &lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt; &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; SolidBrush fillBrush = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidBrush(Color.White);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; graphImage.FillRectangle(fillBrush, 0, 0, UI_CLIENT_WIDTH, UI_HEIGHT);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; fillBrush.Dispose();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #008000"&gt;// or&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt;(SolidBrush fillBrush = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidBrush(Color.White))&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     graphImage.FillRectangle(fillBrush, 0, 0, UI_CLIENT_WIDTH, UI_HEIGHT);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Quando si riassegna una Bitmap assicurarsi che l’oggetto precedente sia deallocato, esempio: &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// wrong&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; picCapture.Image = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Bitmap(32, 32);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// good&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(picCapture.Image != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     picCapture.Image.Dispose();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; picCapture.Image = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Bitmap(32, 32);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Quando si utilizza una Image contenuta in una ImageList è bene ricordare quanto esposto su MSDN: “&lt;u&gt;The returned bitmap is a copy of the original image and should be disposed of using the Image.Dispose method.&lt;/u&gt;”. In altre parole tutte le get da una ImageList clonano una nuova immagine che deve essere rilasciata tramite un Dispose! &lt;br /&gt;&lt;li&gt;Quando si utilizzano direttamente le funzioni native Win32 porre attenzione se queste ritornano una nuova istanza di una risorsa in memoria. Leggere attentamente la loro documentazione! &lt;br /&gt;&lt;li&gt;Ogni volta che si alloca memoria tramite funzioni native Win32 è &lt;u&gt;vostra responsabilità deallocarla.&lt;/u&gt; &lt;br /&gt;&lt;li&gt;Quando si crea un nuovo oggetto non gestito, salvare il riferimento (handle) in una variabile non accessibile dall’esterno. Se per qualsiasi motivo il riferimento viene sovrascritto non sarà più possibile deallocare correttamente la risorsa non gestita. &lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4286655782640742058-3340564790297906374?l=mircovanini.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mircovanini.blogspot.com/feeds/3340564790297906374/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://mircovanini.blogspot.com/2010/10/gdi-leak-wince-c.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3340564790297906374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4286655782640742058/posts/default/3340564790297906374'/><link rel='alternate' type='text/html' href='http://mircovanini.blogspot.com/2010/10/gdi-leak-wince-c.html' title='GDI – Leak – WinCE – C#'/><author><name>MircoVanini</name><uri>http://www.blogger.com/profile/03822018460205348660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
