<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.paulomorgado.net/~d/styles/itemcontent.css"?><rss xmlns:a10="http://www.w3.org/2005/Atom" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Paulo Morgado [EN]</title><link>http://paulomorgado.net/en/</link><description>.NET and Software Architecture and Engeneering</description><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><a10:id>/Blogs/EN</a10:id><dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.paulomorgado.net/PauloMorgado/Blogs/EN" /><feedburner:info uri="paulomorgado/blogs/en" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><image><link>http://paulomorgado.net/en/</link><url>http://paulomorgado.net/images/profile/paulomorgado_100x100.png</url><title>Paulo Morgado [EN]</title></image><feedburner:emailServiceId>PauloMorgado/Blogs/EN</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.paulomorgado.net/PauloMorgado/Blogs/EN" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.paulomorgado.net%2FPauloMorgado%2FBlogs%2FEN" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:browserFriendly>.NET and Software Architecture and Engeneering</feedburner:browserFriendly><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1830751</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/IhLgZuLDaTo/prism-for-windows-runtime-is-out.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsRT/default.aspx">WindowsRT</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Prism/default.aspx">Prism</category><title>Prism For Windows Runtime Is Out</title><description>&lt;p align="justify"&gt;&lt;a title="Developing a Windows Store business app using C#, XAML, and Prism for the Windows Runtime" href="http://msdn.microsoft.com/library/windows/apps/xx130643.aspx" target="_blank"&gt;Prism for the Windows Runtime&lt;/a&gt; and the associated &lt;strong&gt;AdventureWorks Shopper&lt;/strong&gt; reference implementation is now available on the &lt;a title="Windows Dev Center: Tools, samples and docs to build Windows apps." href="http://msdn.microsoft.com/windows/" target="_blank"&gt;Windows Dev Center&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;You can &lt;a title="Just released - Prism for Windows Runtime" href="http://blogs.msdn.com/b/blaine/archive/2013/05/18/just-released-prism-for-windows-runtime.aspx" target="_blank"&gt;read all about it&lt;/a&gt; on &lt;a title="Blaine Wastell - patterns &amp;amp; practices client architecture guidance" href="http://blogs.msdn.com/b/blaine/" target="_blank"&gt;Blaine Wastell’s blog&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="Brian Noyes&amp;#39; Blog" href="http://briannoyes.net/" target="_blank"&gt;Brian Noyes&lt;/a&gt; has also released a &lt;a title="Pluralsight - Hardcore Developer Training" href="http://pluralsight.com/" target="_blank"&gt;Pluralsight&lt;/a&gt; course: &lt;a title="New Pluralsight Course &amp;amp; Prism for Windows Runtime Released!" href="http://tinyurl.com/prismrtcoursesummary" target="_blank"&gt;http://tinyurl.com/prismrtcoursesummary&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1830751" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IhLgZuLDaTo:V_w6A3Kpq6w:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IhLgZuLDaTo:V_w6A3Kpq6w:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/IhLgZuLDaTo" height="1" width="1"/&gt;</description><pubDate>Sun, 19 May 2013 23:42:16 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1830751</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1830751</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/05/20/prism-for-windows-runtime-is-out.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/05/20/prism-for-windows-runtime-is-out.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1830427</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/m1u6K0O88fA/red-gate-is-looking-for-feedback-on-its-asp-net-mvc-web-development-education-website.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/redgate/default.aspx">redgate</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><title>Red Gate Is Looking For Feedback On Its ASP.NET MVC Web Development Education Website</title><description>&lt;p align="justify"&gt;&lt;a target="_blank" href="http://www.red-gate.com/" title="redgate - ingeniously simple tools"&gt;Red Gate&lt;/a&gt; is looking for feedback on its &lt;a target="_blank" href="http://webdev.simple-talk.com/" title="Simple-Talk: Web Developers"&gt;ASP.NET Web Development Education&lt;/a&gt; website.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Visit their website and answer the &lt;a target="_blank" href="https://www.surveymk.com/s/B7GS522" title=".NET Publishing Feedback Survey"&gt;survey&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1830427" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=m1u6K0O88fA:bQqGgis6el4:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=m1u6K0O88fA:bQqGgis6el4:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/m1u6K0O88fA" height="1" width="1"/&gt;</description><pubDate>Thu, 16 May 2013 22:43:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1830427</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1830427</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/05/16/red-gate-is-looking-for-feedback-on-its-asp-net-mvc-web-development-education-website.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/05/16/red-gate-is-looking-for-feedback-on-its-asp-net-mvc-web-development-education-website.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1822937</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/VdgE11qNZE0/developing-an-end-to-end-windows-store-app-using-c-and-xaml-hilo.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/XAML/default.aspx">XAML</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowRT/default.aspx">WindowRT</category><title>Developing an End-to-End Windows Store app using C++ and XAML: Hilo</title><description>&lt;p align="justify"&gt;&lt;img src="http://i.msdn.microsoft.com/dynimg/IC591455.png" align="right" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" alt="" /&gt;Patterns &amp;amp; Practices has released &lt;a href="http://msdn.microsoft.com/library/windows/apps/jj160316.aspx" title="Developing an end-to-end Windows Store app using C++ and XAML: Hilo (Windows)"&gt;Hilo guidance: Developing a Windows Store app using C++ and XAML&lt;/a&gt; which is part of the Windows SDK.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1822937" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VdgE11qNZE0:p-EmBCELc6I:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VdgE11qNZE0:p-EmBCELc6I:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/VdgE11qNZE0" height="1" width="1"/&gt;</description><pubDate>Mon, 21 Jan 2013 01:58:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1822937</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1822937</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/01/21/developing-an-end-to-end-windows-store-app-using-c-and-xaml-hilo.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/01/21/developing-an-end-to-end-windows-store-app-using-c-and-xaml-hilo.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1822934</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/LyNLFLjkKdQ/using-the-geocoordinatereactiveservice.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone7/default.aspx">WindowsPhone7</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Rx/default.aspx">Rx</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone8/default.aspx">WindowsPhone8</category><title>Using The GeoCoordinateReactiveService</title><description>&lt;p align="justify"&gt;Having created an &lt;a target="_blank" href="http://msdn.microsoft.com/data/gg577609.aspx" title="The Reactive Extensions (Rx)..."&gt;Rx&lt;/a&gt; wrapper over the &lt;a target="_blank" href="http://msdn.microsoft.com/library/System.Device.Location.GeoCoordinateWatcher.aspx" title="GeoCoordinateWatcher Class"&gt;GeoCoordinateWatcher&lt;/a&gt; on a &lt;a target="_blank" href="http://msmvps.com/blogs/paulomorgado/archive/2013/01/02/implementing-the-geocordinatewatcher-as-a-reactive-service.aspx" title="Implementing The GeoCoordinateWatcher As A Reactive Service"&gt;previous post&lt;/a&gt;, in this post I&amp;rsquo;ll demonstrate how it can be used in a simple application.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;The application will display the status of the service, the position and the distance traveled.&lt;/p&gt;
&lt;p align="justify"&gt;For this simple application the service will be exposed as a singleton property of the &lt;strong&gt;App&lt;/strong&gt; class:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:blue;"&gt;public partial class &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;App &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;: &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Application
&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
&lt;/span&gt;&lt;span style="background:white;color:green;"&gt;    // ...&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public static &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IGeoCoordinateReactiveService &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;GeoCoordinateService { &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;get&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private set&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; }

&lt;/span&gt;&lt;span style="background:white;color:gray;"&gt;    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;App()
    {
        &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;

        &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;InitializePhoneApplication();

        &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;
    }

    &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private void &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;InitializePhoneApplication()
    {
        &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;

        GeoCoordinateService = &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateReactiveService&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;();

        &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;

    }

    &lt;/span&gt;&lt;span style="background:white;color:green;"&gt;// ...

&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;Getting the status of the service is very simple. It just requires subscribing to the &lt;strong&gt;StatusObservable&lt;/strong&gt;. Since we want to display the status, we need to observe it on the dispatcher before:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:#2b91af;"&gt;App&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.GeoCoordinateService.StatusObservable
    .ObserveOnDispatcher()
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnStatusChanged);&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;For the position we do the same with the &lt;strong&gt;PositionObservable&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:#2b91af;"&gt;App&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.GeoCoordinateService.PositionObservable
    .ObserveOnDispatcher()
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnPositionChanged);&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;The distance traveled would seem a bit more complicated because we need to keep track of the last position and calculate the distance traveled on every position change. But this is where the &lt;strong&gt;Rx&lt;/strong&gt; excels with its query operators. If we combine the position observable with the position observable having &lt;a target="_blank" href="http://msdn.microsoft.com/library/hh229847.aspx" title="Observable.Skip Method"&gt;skipped&lt;/a&gt; one position with the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.reactive.linq.observable.zip.aspx" title="Observable.Zip Method"&gt;zip operator&lt;/a&gt; we end up with an observable with the current and previous position. And if we apply a selector, we get the traveled distance:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:#2b91af;"&gt;App&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.GeoCoordinateService.PositionObservable
    .Zip(
        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;App&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.GeoCoordinateService.PositionObservable.Skip(1),
        (p1, p2) =&amp;gt; p1.Location.GetDistanceTo(p2.Location))
    .ObserveOnDispatcher()
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnDistanceChanged);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;You can find the complete implementation of the service and application &lt;a target="_blank" href="http://code.msdn.microsoft.com/Implementing-the-e1cff2cf" title="Implementing the GeoCoordinateWatcher As A Reactive Service"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://code.msdn.microsoft.com/Implementing-the-e1cff2cf" title="Implementing the GeoCoordinateWatcher As A Reactive Service"&gt;Implementing the GeoCoordinateWatcher As A Reactive Service on MSDN Gallery&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/data/gg577609.aspx" title="The Reactive Extensions (Rx)..."&gt;The Reactive Extensions (Rx)... on MSDN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://rx.codeplex.com/"&gt;Rx (Reactive Extensions) on CodePlex&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;NuGet Pakages 
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Interfaces" title="Rx-Interfaces"&gt;Reactive Extensions - Interfaces Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Core" title="Rx-Core"&gt;Reactive Extensions - Core Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Linq" title="Rx-Linq"&gt;Reactive Extensions - Query Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-PlatformServices" title="Rx-PlatformServices"&gt;Reactive Extensions - Platform Services Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Main" title="Rx-Main"&gt;Reactive Extensions - Main Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Xaml" title="Rx-Xaml"&gt;Reactive Extensions - XAML Support Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Silverlight" title="Rx-Silverlight"&gt;Reactive Extensions - Silverlight Helpers&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/library/hh242981.aspx" title="Using Rx"&gt;Using Rx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://social.msdn.microsoft.com/Forums/en-US/rx/threads" title="Reactive Extensions (Rx) Forum"&gt;Reactive Extensions (Rx) Forum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/rxteam/"&gt;Reactive Extensions Team Blog&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/interoperability/archive/2012/11/06/ms-open-tech-open-sources-rx-reactive-extensions-a-cure-for-asynchronous-data-streams-in-cloud-programming.aspx"&gt;MS Open Tech Open Sources Rx (Reactive Extensions) &amp;ndash; a Cure for Asynchronous Data Streams in Cloud Programming&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1822934" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=LyNLFLjkKdQ:hNY0lwDleVU:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=LyNLFLjkKdQ:hNY0lwDleVU:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/LyNLFLjkKdQ" height="1" width="1"/&gt;</description><pubDate>Mon, 21 Jan 2013 01:49:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1822934</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1822934</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/01/21/using-the-geocoordinatereactiveservice.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/01/21/using-the-geocoordinatereactiveservice.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1822540</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/BPMK6tWKeJI/would-you-like-to-have-roaming-settings-in-visual-studio.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><title>Would you like to have roaming settings in Visual Studio?</title><description>&lt;p align="justify"&gt;The &lt;a target="_blank" href="http://en.wikipedia.org/wiki/C%2B%2B" title="C++ Programming Language"&gt;C++&lt;/a&gt; Team (&lt;a target="_blank" href="http://blogs.msdn.com/b/vcblog/" title="Visual C++ Team Blog"&gt;blog&lt;/a&gt;) has been researching roaming &lt;a target="_blank" href="http://www.microsoft.com/visualstudio/" title="Visual Studio"&gt;Visual Studio&lt;/a&gt; settings and they have a few questions that will help gain insights into what the best experience would be. They have created a &lt;a target="_blank" href="http://aka.ms/vsroaming" title="Roaming your Visual Studio settings"&gt;survey&lt;/a&gt; (&lt;a target="_blank" href="http://aka.ms/vsroaming" title="Roaming your Visual Studio settings"&gt;http://aka.ms/vsroaming&lt;/a&gt;) aimed at understanding Visual Studio settings usage patterns and gathering feedback. The survey should take less than 10 minutes, maybe more if you want to provide a ton of details.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your voice is important. Make sure it is heard!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1822540" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=BPMK6tWKeJI:76QSguF6XzY:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=BPMK6tWKeJI:76QSguF6XzY:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/BPMK6tWKeJI" height="1" width="1"/&gt;</description><pubDate>Sun, 13 Jan 2013 00:52:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1822540</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1822540</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/01/13/would-you-like-to-have-roaming-settings-in-visual-studio.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/01/13/would-you-like-to-have-roaming-settings-in-visual-studio.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1821946</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/hIZ3y0sx-dQ/implementing-the-geocordinatewatcher-as-a-reactive-service.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone7/default.aspx">WindowsPhone7</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Rx/default.aspx">Rx</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone8/default.aspx">WindowsPhone8</category><title>Implementing The GeoCoordinateWatcher As A Reactive Service</title><description>&lt;p align="justify"&gt;With &lt;strong&gt;Rx&lt;/strong&gt;, events are first class citizens that can be passed around and composed as needed in a very simple way.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;p align="justify"&gt;&amp;ldquo;&lt;a target="_blank" href="http://msdn.microsoft.com/data/gg577609.aspx" title="The Reactive Extensions (Rx)..."&gt;The Reactive Extensions (Rx)&lt;/a&gt; is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators. Using Rx, developers &lt;strong&gt;&lt;em&gt;represent&lt;/em&gt;&lt;/strong&gt; asynchronous data streams with &lt;a target="_blank" href="http://msdn.microsoft.com/library/dd990377.aspx" title="IObservable{T} Interface"&gt;Observables&lt;/a&gt;, &lt;strong&gt;&lt;em&gt;query&lt;/em&gt;&lt;/strong&gt; asynchronous data streams using &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh242983(v=VS.103).aspx" title="Querying Observable Sequences using LINQ Operators"&gt;LINQ operators&lt;/a&gt;, and &lt;strong&gt;&lt;em&gt;parameterize&lt;/em&gt;&lt;/strong&gt; the concurrency in the asynchronous data streams using &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/hh242963(v=VS.103).aspx" title="Using Schedulers"&gt;Schedulers&lt;/a&gt;. Simply put, Rx = Observables + LINQ + Schedulers.&amp;rdquo; &amp;ndash; from the &lt;a target="_blank" href="http://msdn.microsoft.com/" title="MSDN - Microsoft Developers Network"&gt;MSDN&lt;/a&gt; page.&lt;/p&gt;
&lt;p align="justify"&gt;The library also provides a considerable amount of helpers that make it easy to warp events into observables.&lt;/p&gt;
&lt;p align="justify"&gt;Wrapping the &lt;a target="_blank" href="http://msdn.microsoft.com/library/System.Device.Location.GeoCoordinateWatcher.aspx" title="GeoCoordinateWatcher Class"&gt;GeoCoordinateWatcher&lt;/a&gt; as a reactive service is quite simple. All it takes is creating observables and exposing the events as observables:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:blue;"&gt;public class &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateReactiveService &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;: &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IGeoCoordinateReactiveService&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IDisposable
&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private readonly &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateWatcher &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcher = &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateWatcher&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;();

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;GeoCoordinateReactiveService()
    {
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.StatusObservable = &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Observable
            &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.FromEventPattern&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPositionStatusChangedEventArgs&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;(
                handler =&amp;gt; geoCoordinateWatcher.StatusChanged += handler,
                handler =&amp;gt; geoCoordinateWatcher.StatusChanged -= handler);

        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.PositionObservable = &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Observable
            &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.FromEventPattern&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPositionChangedEventArgs&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinate&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;&amp;gt;(
                handler =&amp;gt; geoCoordinateWatcher.PositionChanged += handler,
                handler =&amp;gt; geoCoordinateWatcher.PositionChanged -= handler);
    }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IObservable&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;EventPattern&lt;/span&gt;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPositionStatus&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt; StatusObservable { &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;get&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private set&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IObservable&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;EventPattern&lt;/span&gt;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPosition&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinate&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;&amp;gt; PositionObservable { &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;get&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private set&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; }
}&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;And now, instead of the &lt;a target="_blank" href="http://msdn.microsoft.com/en-US/library/system.device.location.geocoordinatewatcher.statuschanged.aspx" title="GeoCoordinateWatcher.StatusChanged Event"&gt;StatusChanged&lt;/a&gt; and &lt;a target="_blank" href="http://msdn.microsoft.com/en-US/library/system.device.location.geocoordinatewatcher.positionchanged.aspx" title="GeoCoordinateWatcher.PositionChanged Event"&gt;PositionChanged&lt;/a&gt; events we have respectively the &lt;strong&gt;StatusObservable&lt;/strong&gt; and &lt;strong&gt;PositionObservable&lt;/strong&gt; as a stream of &lt;a target="_blank" href="http://msdn.microsoft.com/library/hh229009.aspx" title="EventPattern{TEventArgs} Class"&gt;EventPattern&amp;lt;TEventArgs&amp;gt;&lt;/a&gt; instances.&lt;/p&gt;
&lt;p align="justify"&gt;But the &lt;strong&gt;EventPattern&amp;lt;TEventArgs&amp;gt;&lt;/strong&gt; class includes the source of the event and an the event arguments in properties which is far more than we need in this case. With normal &lt;a target="_blank" href="http://msdn.microsoft.com/library/bb397926.aspx" title="Language-Integrated Query (LINQ)"&gt;LINQ&lt;/a&gt; operators we can convert thes streams of &lt;strong&gt;EventPattern&amp;lt;TEventArgs&amp;gt;&lt;/strong&gt; instances in streams of the desired values.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:blue;"&gt;public class &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateReactiveService &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;: &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IGeoCoordinateReactiveService&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IDisposable
&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private readonly &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateWatcher &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcher = &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinateWatcher&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;();

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;GeoCoordinateReactiveService()
    {
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.StatusObservable = &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Observable
            &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.FromEventPattern&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPositionStatusChangedEventArgs&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;(
                handler =&amp;gt; geoCoordinateWatcher.StatusChanged += handler,
                handler =&amp;gt; geoCoordinateWatcher.StatusChanged -= handler)
            &lt;strong&gt;.Select(ep =&amp;gt; ep.EventArgs.Status);&lt;/strong&gt;

        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.PositionObservable = &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Observable
            &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.FromEventPattern&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPositionChangedEventArgs&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinate&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;&amp;gt;(
                handler =&amp;gt; geoCoordinateWatcher.PositionChanged += handler,
                handler =&amp;gt; geoCoordinateWatcher.PositionChanged -= handler)
            &lt;strong&gt;.Select(ep =&amp;gt; ep.EventArgs.Position);&lt;/strong&gt;
    }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IObservable&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;&lt;strong&gt;GeoPositionStatus&lt;/strong&gt;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt; StatusObservable { &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;get&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private set&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;IObservable&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoPosition&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;GeoCoordinate&lt;/span&gt;&lt;/strong&gt;&lt;span style="background:white;color:black;"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&amp;gt; PositionObservable { &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;get&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private set&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;; }
}&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;And to use these observables all it is needed is to subscribe to them:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcherService.StatusObservable
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnStatusChanged);

&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcherService.PositionObservable
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnPositionChanged);&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;But, usually, we want to use these values in view model to bind to the UI and, consequently, we want this to happen in the UI thread:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcherService.StatusObservable
    .ObserveOnDispatcher()
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnStatusChanged);

&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;geoCoordinateWatcherService.PositionObservable
    .ObserveOnDispatcher()
    .Subscribe(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.OnPositionChanged);&lt;/span&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;It&amp;rsquo;s as simple as that!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/data/gg577609.aspx" title="The Reactive Extensions (Rx)..."&gt;The Reactive Extensions (Rx)... on MSDN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://rx.codeplex.com/"&gt;Rx (Reactive Extensions) on CodePlex&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;NuGet Pakages 
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Interfaces" title="Rx-Interfaces"&gt;Reactive Extensions - Interfaces Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Core" title="Rx-Core"&gt;Reactive Extensions - Core Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Linq" title="Rx-Linq"&gt;Reactive Extensions - Query Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-PlatformServices" title="Rx-PlatformServices"&gt;Reactive Extensions - Platform Services Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Main" title="Rx-Main"&gt;Reactive Extensions - Main Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Xaml" title="Rx-Xaml"&gt;Reactive Extensions - XAML Support Library&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://nuget.org/packages/Rx-Silverlight" title="Rx-Silverlight"&gt;Reactive Extensions - Silverlight Helpers&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/library/hh242981.aspx" title="Using Rx"&gt;Using Rx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://social.msdn.microsoft.com/Forums/en-US/rx/threads" title="Reactive Extensions (Rx) Forum"&gt;Reactive Extensions (Rx) Forum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/rxteam/"&gt;Reactive Extensions Team Blog&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/interoperability/archive/2012/11/06/ms-open-tech-open-sources-rx-reactive-extensions-a-cure-for-asynchronous-data-streams-in-cloud-programming.aspx"&gt;MS Open Tech Open Sources Rx (Reactive Extensions) &amp;ndash; a Cure for Asynchronous Data Streams in Cloud Programming&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1821946" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hIZ3y0sx-dQ:3OUuA4A3ZSk:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hIZ3y0sx-dQ:3OUuA4A3ZSk:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/hIZ3y0sx-dQ" height="1" width="1"/&gt;</description><pubDate>Wed, 02 Jan 2013 02:35:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1821946</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1821946</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2013/01/02/implementing-the-geocordinatewatcher-as-a-reactive-service.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2013/01/02/implementing-the-geocordinatewatcher-as-a-reactive-service.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1820634</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/CEDywO0uCI4/developing-multi-tenant-applications-for-the-cloud-3rd-edition.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Cloud/default.aspx">Cloud</category><title>Developing Multi-tenant Applications for the Cloud, 3rd Edition</title><description>&lt;p align="justify"&gt;&lt;a title="patterns &amp;amp; practices Developer Center Home" href="http://msdn.microsoft.com/practices" target="_blank"&gt;&lt;img style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" align="right" src="http://i.msdn.microsoft.com/dynimg/IC368873.png" alt="" /&gt;Microsoft Patterns &amp;amp; Practices&lt;/a&gt; has recently released &lt;a title="Developing Multi-tenant Applications for the Cloud, 3rd Edition" href="http://msdn.microsoft.com/en-us/library/ff966499.aspx" target="_blank"&gt;Developing Multi-tenant Applications for the Cloud, 3rd Edition&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1820634" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CEDywO0uCI4:Nj5fTsrXd_k:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CEDywO0uCI4:Nj5fTsrXd_k:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/CEDywO0uCI4" height="1" width="1"/&gt;</description><pubDate>Sun, 09 Dec 2012 23:06:18 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1820634</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1820634</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/12/09/developing-multi-tenant-applications-for-the-cloud-3rd-edition.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/12/09/developing-multi-tenant-applications-for-the-cloud-3rd-edition.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1817851</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/bwOHUAQeGxI/a-synchronization-context-based-on-the-tpl-dataflow-library.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/async/default.aspx">async</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TPL/default.aspx">TPL</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TplDataflow/default.aspx">TplDataflow</category><title>A Synchronization Context Based On The TPL Dataflow Library</title><description>&lt;p align="justify"&gt;The purpose of the synchronization model implemented by the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.threading.synchronizationcontext.aspx" title="SynchronizationContext Class"&gt;SynchronizationContext class&lt;/a&gt; is to allow the asynchronous/synchronization operations of the common language runtime to behave properly with different synchronization models. This model also simplifies some of the requirements that managed applications have to follow in order to work correctly under different synchronization environments. Examples of such synchronization environments are user interface infrastructures like &lt;a target="_blank" href="http://msdn.microsoft.com/library/dd30h2yb.aspx" title="Windows Forms"&gt;Windows Forms&lt;/a&gt;, &lt;a target="_blank" href="http://msdn.microsoft.com/library/ms754130.aspx" title="Windows Presentation Foundation"&gt;Windows Presentation Foundation&lt;/a&gt; and &lt;a target="_blank" href="http://msdn.microsoft.com/asp.net/" title="ASP.NET Developer Center"&gt;ASP.NET&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Providers of synchronization models extend this class to provide their own implementations. Because these user interface infrastructures usually run on their own threads, dispatching execution to their execution contexts usually means leaving the current thread.&lt;/p&gt;
&lt;p align="justify"&gt;The &lt;a target="_blank" href="http://msdn.microsoft.com/library/dd460717.aspx" title="Task Parallel Library (TPL)"&gt;Task Parallel Library (TPL)&lt;/a&gt; provides dataflow components to help increase the robustness of concurrency-enabled applications. These dataflow components are collectively referred to as the &lt;a target="_blank" href="http://msdn.microsoft.com/library/hh228603.aspx" title="Dataflow (Task Parallel Library)"&gt;TPL Dataflow Library&lt;/a&gt;. This dataflow model promotes actor-based programming by providing in-process message passing for coarse-grained dataflow and pipelining tasks. The dataflow components build on the types and scheduling infrastructure of the TPL and integrate with the C#, Visual Basic, and F# language support for asynchronous programming. These dataflow components are useful when you have multiple operations that must communicate with one another asynchronously or when you want to process data as it becomes available. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;The &lt;a target="_blank" href="http://msdn.microsoft.com/library/hh228603.aspx" title="Dataflow (Task Parallel Library)"&gt;TPL Dataflow Library&lt;/a&gt; (&lt;strong&gt;System.Threading.Tasks.Dataflow&lt;/strong&gt; namespace) is not distributed with the &lt;strong&gt;.NET Framework 4.5&lt;/strong&gt;. To install the &lt;strong&gt;System.Threading.Tasks.Dataflow&lt;/strong&gt; namespace, open your project in &lt;strong&gt;Visual Studio 2012&lt;/strong&gt;, choose &lt;strong&gt;Manage NuGet Packages&lt;/strong&gt; from the &lt;strong&gt;Project&lt;/strong&gt; menu, and search online for the &lt;a target="_blank" href="http://nuget.org/packages/Microsoft.Tpl.Dataflow" title="TPL Dataflow"&gt;&lt;strong&gt;Microsoft.Tpl.Dataflow&lt;/strong&gt; package&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;Sometimes, for demo or testing purposes, I need a synchronization context that behaves like the user interface ones but doesn&amp;rsquo;t force me to build applications with a user interface and the &lt;strong&gt;TPL Dataflow Library&lt;/strong&gt; seemed like a good option to implement such synchronization context.&lt;/p&gt;
&lt;p align="justify"&gt;It was as easy as this:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="background:white;color:blue;"&gt;public class &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;TplDataflowSynchronizationContext &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;: &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;SynchronizationContext
&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;private &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionBlock&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt; ab
        = &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionBlock&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;(
            item =&amp;gt;
            {
                &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Trace&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.WriteLine(
                    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.Format(&lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;{0}: {1}&amp;quot;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Environment&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.CurrentManagedThreadId, item.operation));

                &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;try
                &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
                    item.d(item.state);
                }
                &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;finally
                &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{
                    item.SetResult(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;true&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;);
                }
            });

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public override &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;SynchronizationContext &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;CreateCopy()
    {
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;return new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;TplDataflowSynchronizationContext&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;();
    }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public override void &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;Post(&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;SendOrPostCallback &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;d, &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;object &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;state)
    {
        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Trace&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.WriteLine(
            &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.Format(&lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;{0}: Posting...&amp;quot;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Environment&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.CurrentManagedThreadId));

        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.ab.Post(&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{ d = d, state = state, operation = &lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;Post&amp;quot; &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;});

        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Trace&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.WriteLine(
            &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.Format(&lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;{0}: Posted.&amp;quot;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Environment&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.CurrentManagedThreadId));
    }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public override void &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;Send(&lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;SendOrPostCallback &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;d, &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;object &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;state)
    {
        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Trace&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.WriteLine(
            &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.Format(&lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;{0}: Sending...&amp;quot;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Environment&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.CurrentManagedThreadId));

        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;item = &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;new &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;{ d = d, state = state, operation = &lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;Send&amp;quot; &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;};
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;this&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.ab.SendAsync(item);
        item.Task.Wait();

        &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Trace&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.WriteLine(
            &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.Format(&lt;/span&gt;&lt;span style="background:white;color:#a31515;"&gt;&amp;quot;{0}: Sent.&amp;quot;&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;, &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;Environment&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;.CurrentManagedThreadId));
    }

    &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public class &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;ActionItem &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;: &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;TaskCompletionSource&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;bool&lt;/span&gt;&lt;span style="background:white;color:black;"&gt;&amp;gt;
    {
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public &lt;/span&gt;&lt;span style="background:white;color:#2b91af;"&gt;SendOrPostCallback &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;d;
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public object &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;state;
        &lt;/span&gt;&lt;span style="background:white;color:blue;"&gt;public string &lt;/span&gt;&lt;span style="background:white;color:black;"&gt;operation;
    }
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;UPDATE:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Fixed implementation because the &lt;strong&gt;SynchronizationContext.Send&lt;/strong&gt; method returned without having completely executed the operation. Thanks to &lt;a target="_blank" href="http://blog.svick.org/" title="Svick&amp;#39;s blog"&gt;Svick&lt;/a&gt; for pointing that out and &lt;a target="_blank" href="http://social.msdn.microsoft.com/profile/stephen%20toub%20-%20msft/" title="Stephen Toub"&gt;Stephen Toub&lt;/a&gt; for the help fixing it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1817851" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=bwOHUAQeGxI:iFy8lJuYoHQ:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=bwOHUAQeGxI:iFy8lJuYoHQ:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/bwOHUAQeGxI" height="1" width="1"/&gt;</description><pubDate>Tue, 09 Oct 2012 00:53:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1817851</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1817851</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/10/09/a-synchronization-context-based-on-the-tpl-dataflow-library.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/10/09/a-synchronization-context-based-on-the-tpl-dataflow-library.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1817811</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/-sjjJEcZvHo/what-s-new-in-c-5-0-session-materials-from-rumos-insideout-event.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/async/default.aspx">async</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET4.5/default.aspx">.NET4.5</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_5.0/default.aspx">C#5.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET+Web+API/default.aspx">ASP.NET Web API</category><title>What’s New In C# 5.0 Session Materials From Rumos InsideOut Event</title><description>&lt;p&gt;Here are the materials from my &lt;strong&gt;What’s New In C# 5.0&lt;/strong&gt; session at the &lt;a title="Rumos Inside &amp;amp; Out / .NET The Next Step" href="http://dev.insideout.rumos.pt" target="_blank"&gt;Rumos InsideOut Event&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Slide deck:&lt;/strong&gt;&lt;/p&gt; &lt;iframe style="border-bottom:#ccc 0px solid;border-left:#ccc 1px solid;margin-bottom:5px;border-top:#ccc 1px solid;border-right:#ccc 1px solid;" height="356" src="http://www.slideshare.net/slideshow/embed_code/14624339" frameborder="0" width="427" scrolling="no"&gt; &lt;/iframe&gt;  &lt;div style="margin-bottom:5px;"&gt;&lt;strong&gt;&lt;a title="What&amp;#39;s New In C# 5.0" href="http://www.slideshare.net/PauloJorgeMorgado/whats-new-in-c-50" target="_blank"&gt;What&amp;#39;s New In C# 5.0&lt;/a&gt; &lt;/strong&gt;from &lt;strong&gt;&lt;a href="http://www.slideshare.net/PauloJorgeMorgado" target="_blank"&gt;Paulo Morgado&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Sample code:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="C# 5.0 Async/Await Demo Code" href="http://code.msdn.microsoft.com/C-50-AsyncAwait-Demo-Code-334679a5" target="_blank"&gt;C# 5.0 Async/Await Demo Code&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1817811" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=-sjjJEcZvHo:B0J_kwEhezY:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=-sjjJEcZvHo:B0J_kwEhezY:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/-sjjJEcZvHo" height="1" width="1"/&gt;</description><pubDate>Sun, 07 Oct 2012 20:51:19 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1817811</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1817811</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/10/07/what-s-new-in-c-5-0-session-materials-from-rumos-insideout-event.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/10/07/what-s-new-in-c-5-0-session-materials-from-rumos-insideout-event.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1817810</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/1t5ylU8LQbE/c-5-0-async-await-demo-code.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/async/default.aspx">async</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET4.5/default.aspx">.NET4.5</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_5.0/default.aspx">C#5.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET+Web+API/default.aspx">ASP.NET Web API</category><title>C# 5.0 Async/Await Demo Code</title><description>&lt;p&gt;I’ve published the sample code I use to demonstrate the use of &lt;strong&gt;async&lt;/strong&gt;/&lt;strong&gt;await&lt;/strong&gt; in &lt;a title="Microsoft Visual C#" href="http://csharp.net/" target="_blank"&gt;C#&lt;/a&gt; 5.0. You can find it &lt;a title="C# 5.0 Async/Await Demo Code" href="http://code.msdn.microsoft.com/C-50-AsyncAwait-Demo-Code-334679a5" target="_blank"&gt;here&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;Projects&lt;/h1&gt;  &lt;h2&gt;PauloMorgado.AyncDemo.WebServer&lt;/h2&gt;  &lt;p align="justify"&gt;This project is a simple web server implemented as a console application using &lt;a title="Getting Started with ASP.NET Web API" href="http://www.asp.net/web-api" target="_blank"&gt;Microsoft ASP.NET Web API&lt;/a&gt; self hosting and serves an image (with a delay) that is accessed by the other projects.&lt;/p&gt;  &lt;p align="justify"&gt;This project has a dependency on &lt;a title="Json.NET" href="http://json.codeplex.com/" target="_blank"&gt;Json.NET&lt;/a&gt; due to the fact the the &lt;strong&gt;Microsoft ASP.NET Web API&lt;/strong&gt; hosting has a dependency on &lt;strong&gt;Json.NET&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;The application must be run on a command prompt with administrative privileges or a &lt;font face="Consolas"&gt;urlacl&lt;/font&gt; must be added to allow the use of the following command:&lt;/p&gt;  &lt;pre class="code"&gt;netsh http add urlacl url=http://+:9090/ user=machine\username&lt;/pre&gt;

&lt;p align="justify"&gt;To remove the &lt;font face="Consolas"&gt;urlacl&lt;/font&gt;, just use the following command:&lt;/p&gt;

&lt;pre class="code"&gt;netsh http delete urlacl url=http://+:9090/&lt;/pre&gt;

&lt;h2&gt;PauloMorgado.AsyncDemo.WindowsForms&lt;/h2&gt;

&lt;p align="justify"&gt;This Windows Forms project contains three regions that must be uncommented one at a time:&lt;/p&gt;

&lt;h3 align="justify"&gt;Sync with WebClient&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through a synchronous call using the &lt;a title="WebClient Class (System.Net)" href="http://msdn.microsoft.com/library/system.net.webclient.aspx" target="_blank"&gt;WebClient class&lt;/a&gt;.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async with WebClient&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through an asynchronous call using the &lt;a title="WebClient Class (System.Net)" href="http://msdn.microsoft.com/library/system.net.webclient.aspx" target="_blank"&gt;WebClient class&lt;/a&gt;.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async deadlock&lt;/h3&gt;

&lt;p align="justify"&gt;This code how &lt;strong&gt;async&lt;/strong&gt; operations can still deadlock.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async with HttpClient with cancelation&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through an asynchronous call with cancelation using the &lt;a title="HttpClient Class (System.Net.Http)" href="http://msdn.microsoft.com/library/system.net.http.httpclient.aspx" target="_blank"&gt;HttpClient class&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;PauloMorgado.AsyncDemo.Wpf&lt;/h2&gt;

&lt;p align="justify"&gt;This WPF project contains three regions that must be uncommented one at a time:&lt;/p&gt;

&lt;h3 align="justify"&gt;Sync with WebClient&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through a synchronous call using the &lt;a title="WebClient Class (System.Net)" href="http://msdn.microsoft.com/library/system.net.webclient.aspx" target="_blank"&gt;WebClient class&lt;/a&gt;.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async with WebClient&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through an asynchronous call using the &lt;a title="WebClient Class (System.Net)" href="http://msdn.microsoft.com/library/system.net.webclient.aspx" target="_blank"&gt;WebClient class&lt;/a&gt;.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async deadlock&lt;/h3&gt;

&lt;p align="justify"&gt;This code how &lt;strong&gt;async&lt;/strong&gt; operations can still deadlock.&lt;/p&gt;

&lt;h3 align="justify"&gt;Async with HttpClient with cancelation&lt;/h3&gt;

&lt;p align="justify"&gt;This code retrieves the image through an asynchronous call with cancelation using the &lt;a title="HttpClient Class (System.Net.Http)" href="http://msdn.microsoft.com/library/system.net.http.httpclient.aspx" target="_blank"&gt;HttpClient class&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1817810" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=1t5ylU8LQbE:oRqcEqMUD7M:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=1t5ylU8LQbE:oRqcEqMUD7M:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/1t5ylU8LQbE" height="1" width="1"/&gt;</description><pubDate>Sun, 07 Oct 2012 20:46:37 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1817810</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1817810</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/10/07/c-5-0-async-await-demo-code.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/10/07/c-5-0-async-await-demo-code.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1817267</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/phDZhdbT1HY/feedback-requested-usability-of-the-remarks-section-in-reference-topics.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><title>Feedback Requested: Usability Of The Remarks Section In Reference Topics</title><description>&lt;p align="justify"&gt;&lt;a title="Microsoft Corporation" href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt; is planning to expand the Remarks section of selected types in the &lt;a title=".NET Framework Class Library" href="http://msdn.microsoft.com/en-us/library/gg145045" target="_blank"&gt;.NET Framework Class Library&lt;/a&gt; to provide detailed usage information and code examples. (For an example, see the Remarks section for the &lt;a title="System.String class" href="http://msdn.microsoft.com/en-us/library/system.string.aspx" target="_blank"&gt;System.String class&lt;/a&gt;.) In the current design, the Remarks section isn’t easily discoverable, because member tables take up a lot of screen real estate.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Some alternate page designs are proposed to address this problem.&lt;/p&gt;  &lt;p align="justify"&gt;Click &lt;a title="Remarks section in MSDN library survey" href="https://www.surveymonkey.com/s/Z229CHP"&gt;here&lt;/a&gt; to provide your feedback.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1817267" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=phDZhdbT1HY:9drsO_4fk6Q:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=phDZhdbT1HY:9drsO_4fk6Q:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/phDZhdbT1HY" height="1" width="1"/&gt;</description><pubDate>Tue, 25 Sep 2012 01:06:02 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1817267</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1817267</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/09/25/feedback-requested-usability-of-the-remarks-section-in-reference-topics.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/09/25/feedback-requested-usability-of-the-remarks-section-in-reference-topics.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1813132</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/mbI5-NzfDtM/windows-8-sdk-customer-satisfaction-survey.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Windows/default.aspx">Windows</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Windows8/default.aspx">Windows8</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Metro/default.aspx">Metro</category><title>Windows 8 SDK Customer Satisfaction Survey</title><description>&lt;p align="justify"&gt;&lt;a title="Microsoft Windows" href="http://www.microsoft.com/windows/" target="_blank"&gt;Windows&lt;/a&gt; 8 introduces a number of innovations in the way information is delivered to developers. &lt;a title="Microsoft Corporation" href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt; would like to know how well these are working for you, and where they can make further changes to improve your experience.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;To review the site before you complete the survey, visit the &lt;a title="Metro stylre app development" href="http://msdn.microsoft.com/windows/apps/" target="_blank"&gt;Windows 8 Dev Center&lt;/a&gt;. In particular, have a look at the section called &lt;a title="Learn to build Metro style apps" href="http://msdn.microsoft.com/library/windows/apps/" target="_blank"&gt;Learn to build Metro style apps&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;A few questions in the survey are about about how the Windows 8 site experience compares to the &lt;a title="iOS Dev Center - Apple Developer" href="https://developer.apple.com/devcenter/ios/index.action" target="_blank"&gt;iOS&lt;/a&gt; and &lt;a title="Develop | Android Developers" href="http://developer.android.com/develop/index.html" target="_blank"&gt;Android&lt;/a&gt; sites. If you aren’t an experienced iOS or Android developer, feel free to skip these parts. But, if you’ve made apps for those platforms, or if you’d like to compare site features based on just a browse through those sites, Microsoft would like to hear your opinion.&lt;/p&gt;  &lt;p align="justify"&gt;The survey will be available &lt;a title="Windows 8 SDK Customer Satisfaction" href="http://www.surveymonkey.com/s/B37GTNK" target="_blank"&gt;here&lt;/a&gt; until July 27, 2012.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1813132" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=mbI5-NzfDtM:PZ9HdaByWXo:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=mbI5-NzfDtM:PZ9HdaByWXo:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/mbI5-NzfDtM" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Jul 2012 23:51:05 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1813132</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1813132</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/07/20/windows-8-sdk-customer-satisfaction-survey.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/07/20/windows-8-sdk-customer-satisfaction-survey.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1812975</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/hq6gv8bwzT8/breaking-changes-in-argument-list-evaluation-in-c-5-0.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2010/default.aspx">VisualStudio2010</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET4.0/default.aspx">.NET4.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_4.0/default.aspx">C#4.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET4.5/default.aspx">.NET4.5</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2012/default.aspx">VisualStudio2012</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_5.0/default.aspx">C#5.0</category><title>Breaking Changes In Argument List Evaluation In C# 5.0</title><description>&lt;p&gt;The &lt;a title="C# Language Specification" href="http://msdn.microsoft.com/library/ms228593.aspx" target="_blank"&gt;C# Language Specification&lt;/a&gt; states on §7.5.1.2 that “(…) the expressions or variable references of an argument list are evaluated in order, from left to right (…)”.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, when this code is compiled with the &lt;a title="Microsoft Visual C#" href="http://csharp.net/" target="_blank"&gt;C#&lt;/a&gt; 4.0 compiler:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;static void &lt;/span&gt;M(
    &lt;span style="color:blue;"&gt;int &lt;/span&gt;x = 10,
    &lt;span style="color:blue;"&gt;int &lt;/span&gt;y = 20,
    &lt;span style="color:blue;"&gt;int &lt;/span&gt;z = 30)
{
    &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(
        &lt;span style="color:#a31515;"&gt;&amp;quot;x={0}, y={1}, z={2}&amp;quot;&lt;/span&gt;, x, y, z);
}

&lt;span style="color:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
{
    &lt;span style="color:blue;"&gt;int &lt;/span&gt;a = 0;

    M(++a, z: ++a);
}&lt;/pre&gt;

&lt;p align="justify"&gt;and run, this unexpected output is obtained:&lt;/p&gt;

&lt;pre class="code"&gt;x=2, y=20, z=1&lt;/pre&gt;

&lt;p align="justify"&gt;In fact, fixing this compiler flaw was the cause of one of the few &lt;a title="Visual C# Breaking Changes in Visual Studio 2012" href="http://msdn.microsoft.com/library/hh678682(v=vs.110).aspx" target="_blank"&gt;breaking changes introduced in C# 5.0&lt;/a&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;Using the 5.0 compiler, the expected result is obtained:&lt;/p&gt;

&lt;pre class="code"&gt;x=1, y=20, z=2&lt;/pre&gt;

&lt;p align="justify"&gt;To avoid this type of surprises, expression evaluation should be avoided in argument lists.&lt;/p&gt;

&lt;p align="justify"&gt;With this code:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;int &lt;/span&gt;a = 0;

&lt;span style="color:blue;"&gt;int &lt;/span&gt;i = ++a;
&lt;span style="color:blue;"&gt;int &lt;/span&gt;j = ++a;

M(i, z: j);&lt;/pre&gt;

&lt;p align="justify"&gt;the same result is obtained for both C# 4.0 and C# 5.0:&lt;/p&gt;

&lt;pre class="code"&gt;x=1, y=20, z=2&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812975" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=hq6gv8bwzT8:HGERR9Macio:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=hq6gv8bwzT8:HGERR9Macio:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/hq6gv8bwzT8" height="1" width="1"/&gt;</description><pubDate>Wed, 18 Jul 2012 00:22:38 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1812975</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1812975</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/07/18/breaking-changes-in-argument-list-evaluation-in-c-5-0.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/07/18/breaking-changes-in-argument-list-evaluation-in-c-5-0.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1812543</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/Zn_1j6nQ8Ac/how-to-make-xaml-content-globalizable-when-using-value-converters.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Globalization/default.aspx">Globalization</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Localization/default.aspx">Localization</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone7/default.aspx">WindowsPhone7</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/XAML/default.aspx">XAML</category><title>How To: Make XAML Content Globalizable When Using Value Converters</title><description>&lt;p align="justify"&gt;(This content was written based on &lt;a title="Silverlight" href="http://Silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; for &lt;a title="Windows Phone" href="http://www.windowsphone.com/" target="_blank"&gt;Windows Phone&lt;/a&gt;, but might be valid for generic &lt;a title="Silverlight" href="http://Silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt;.)&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;There are a many articles on &lt;a title="MSDN - Microsoft Developers Network" href="http://msdn.microsoft.com/" target="_blank"&gt;MSDN&lt;/a&gt; (and all over the Internet) about globalization and localization of &lt;a title="Silverlight" href="http://Silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; applications in general and specifically &lt;strong&gt;Windows Phone 7&lt;/strong&gt; applications but I haven’t found any that uses a value converter.&lt;/p&gt;  &lt;!--more--&gt;  &lt;p align="justify"&gt;If you read the documentation for the &lt;a title="IValueConverter Interface" href="http://msdn.microsoft.com/library/System.Windows.Data.IValueConverter(v=vs.95).aspx" target="_blank"&gt;IValueConverter interface&lt;/a&gt;, you can see that both in the &lt;a title="IValueConverter.Convert Method" href="http://msdn.microsoft.com/library/system.windows.data.ivalueconverter.convert(v=vs.95).aspx" target="_blank"&gt;Convert&lt;/a&gt; and &lt;a title="IValueConverter.ConvertBack Method" href="http://msdn.microsoft.com/library/system.windows.data.ivalueconverter.convertback(v=vs.95).aspx" target="_blank"&gt;ConvertBack&lt;/a&gt; methods have a &lt;strong&gt;culture&lt;/strong&gt; parameter of type &lt;a title="CultureInfo Class" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo(v=vs.95).aspx" target="_blank"&gt;CultureInfo&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;And why would we need the culture for the conversion? Imagine the application is a shop that shows prices in more than one currency. Or the application is a currency converter.&lt;/p&gt;  &lt;p align="justify"&gt;The &lt;strong&gt;culture&lt;/strong&gt; parameter is used as the culture of the conversion. Any place inside the &lt;a title="IValueConverter.Convert Method" href="http://msdn.microsoft.com/library/system.windows.data.ivalueconverter.convert(v=vs.95).aspx" target="_blank"&gt;Convert&lt;/a&gt; or &lt;a title="IValueConverter.ConvertBack Method" href="http://msdn.microsoft.com/library/system.windows.data.ivalueconverter.convertback(v=vs.95).aspx" target="_blank"&gt;ConvertBack&lt;/a&gt; methods where a &lt;a title="CultureInfo Class" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo(v=vs.95).aspx" target="_blank"&gt;CultureInfo&lt;/a&gt; or &lt;a title="IFormatProvider Interface" href="http://msdn.microsoft.com/library/system.iformatprovider(v=vs.95).aspx" target="_blank"&gt;IFormatProvider&lt;/a&gt; instance is need, the &lt;strong&gt;culture&lt;/strong&gt; parameter should be used:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MoneyValueConverter &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;IValueConverter
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public object &lt;/span&gt;Convert(&lt;span style="color:blue;"&gt;object &lt;/span&gt;value, &lt;span style="color:#2b91af;"&gt;Type &lt;/span&gt;targetType, &lt;span style="color:blue;"&gt;object &lt;/span&gt;parameter, &lt;span style="color:#2b91af;"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(value != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;"&gt;return string&lt;/span&gt;.Format(culture, &lt;span style="color:#a31515;"&gt;&amp;quot;{0:C}&amp;quot;&lt;/span&gt;, value);
        }

        &lt;span style="color:blue;"&gt;return null&lt;/span&gt;;
    }

    &lt;span style="color:blue;"&gt;public object &lt;/span&gt;ConvertBack(&lt;span style="color:blue;"&gt;object &lt;/span&gt;value, &lt;span style="color:#2b91af;"&gt;Type &lt;/span&gt;targetType, &lt;span style="color:blue;"&gt;object &lt;/span&gt;parameter, &lt;span style="color:#2b91af;"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;();
    }
}&lt;/pre&gt;

&lt;p align="justify"&gt;The value of the &lt;strong&gt;culture&lt;/strong&gt; parameter is determined in the following order:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;div align="justify"&gt;The converter looks for the &lt;a title="Binding.ConverterCulture Property" href="http://msdn.microsoft.com/library/system.windows.data.binding.converterculture(v=vs.95).aspx" target="_blank"&gt;ConverterCulture&lt;/a&gt; property on the &lt;a title="Binding Class" href="http://msdn.microsoft.com/library/system.servicemodel.channels.binding(v=vs.95).aspx" target="_blank"&gt;Binding&lt;/a&gt; object.&lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;div align="justify"&gt;If the &lt;a title="Binding.ConverterCulture Property" href="http://msdn.microsoft.com/library/system.windows.data.binding.converterculture(v=vs.95).aspx" target="_blank"&gt;ConverterCulture&lt;/a&gt; value is null, the value of the &lt;a title="FrameworkElement.Language Property" href="http://msdn.microsoft.com/library/system.windows.frameworkelement.language(v=vs.95).aspx" target="_blank"&gt;Language&lt;/a&gt; property is used.&lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p align="justify"&gt;The first case is very straightforward:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;Euros&lt;/span&gt;&lt;span style="color:blue;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;Converter&lt;/span&gt;&lt;span style="color:blue;"&gt;={&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MoneyValueConverter&lt;/span&gt;&lt;span style="color:blue;"&gt;}, &lt;/span&gt;&lt;span style="color:red;"&gt;ConverterCulture&lt;/span&gt;&lt;span style="color:blue;"&gt;=pt-PT}&amp;quot; /&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;Dollars&lt;/span&gt;&lt;span style="color:blue;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;Converter&lt;/span&gt;&lt;span style="color:blue;"&gt;={&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MoneyValueConverter&lt;/span&gt;&lt;span style="color:blue;"&gt;}, &lt;/span&gt;&lt;span style="color:red;"&gt;ConverterCulture&lt;/span&gt;&lt;span style="color:blue;"&gt;=en-US}&amp;quot; /&amp;gt;

&lt;/span&gt;&lt;/pre&gt;

&lt;p align="justify"&gt;But that should only be used when the culture of the conversion differs form the application culture or has an explicit value. The second case is the most frequently used and that’s where things get complicated. The value of the &lt;a title="FrameworkElement.Language Property" href="http://msdn.microsoft.com/library/system.windows.frameworkelement.language(v=vs.95).aspx" target="_blank"&gt;Language&lt;/a&gt; property of an &lt;a title="FrameworkElement Class" href="http://msdn.microsoft.com/library/system.windows.frameworkelement(v=vs.95).aspx" target="_blank"&gt;element&lt;/a&gt;, if not explicitly set, is inherited from its container. In the case of &lt;strong&gt;Windows Phone 7&lt;/strong&gt;, up to the &lt;a title="PhoneApplicationFrame Class" href="http://msdn.microsoft.com/library/microsoft.phone.controls.phoneapplicationframe(v=VS.92).aspx" target="_blank"&gt;phone application frame&lt;/a&gt;. And it’s never null.&lt;/p&gt;

&lt;p align="justify"&gt;I was expecting that the value of the &lt;a title="FrameworkElement.Language Property" href="http://msdn.microsoft.com/library/system.windows.frameworkelement.language(v=vs.95).aspx" target="_blank"&gt;Language&lt;/a&gt; property of the &lt;a title="PhoneApplicationFrame Class" href="http://msdn.microsoft.com/library/microsoft.phone.controls.phoneapplicationframe(v=VS.92).aspx" target="_blank"&gt;phone application frame&lt;/a&gt; would reflect the value of the &lt;a title="CultureInfo.CurrentCulture Property" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo.currentculture(v=vs.95).aspx" target="_blank"&gt;current culture&lt;/a&gt; but, as far as I can tell, it’s always &lt;strong&gt;en-US&lt;/strong&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;So, if, unless explicitly set, the language is always &lt;strong&gt;en-US&lt;/strong&gt;. How to specify which culture to use inside the value converter methods? The &lt;a title="CultureInfo.CurrentCulture Property" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo.currentculture(v=vs.95).aspx" target="_blank"&gt;current culture&lt;/a&gt; could be used, but how to know if the language has been changed or the culture has been explicitly specified?&lt;/p&gt;

&lt;p align="justify"&gt;The solution is setting the language on the &lt;a title="PhoneApplicationFrame Class" href="http://msdn.microsoft.com/library/microsoft.phone.controls.phoneapplicationframe(v=VS.92).aspx" target="_blank"&gt;phone application frame&lt;/a&gt; and always to be able to use the &lt;strong&gt;culture&lt;/strong&gt; parameter inside the converter methods:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.RootFrame = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;PhoneApplicationFrame
&lt;/span&gt;{
    Language = &lt;span style="color:#2b91af;"&gt;XmlLanguage&lt;/span&gt;.GetLanguage(&lt;span style="color:#2b91af;"&gt;CultureInfo&lt;/span&gt;.CurrentCulture.Name)
};&lt;/pre&gt;

&lt;p align="justify"&gt;The correct way to get the &lt;a title="XmlLanguage Class" href="http://msdn.microsoft.com/library/system.windows.markup.xmllanguage(v=vs.95)" target="_blank"&gt;XML language&lt;/a&gt; would be to use the &lt;a title="CultureInfo.IetfLanguageTag Property" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo.ietflanguagetag.aspx" target="_blank"&gt;IetfLanguageTag property&lt;/a&gt; of the &lt;a title="CultureInfo.CurrentCulture Property" href="http://msdn.microsoft.com/library/system.globalization.cultureinfo.currentculture(v=vs.95).aspx" target="_blank"&gt;current culture&lt;/a&gt;, but that property is not available on &lt;a title="Silverlight" href="http://Silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt;.&lt;/p&gt;

&lt;p align="justify"&gt;As far as I could find, you won’t get into trouble unless you’re dealing with Chinese cultures. But if you’re like me, you’ll probably be publishing your applications worldwide.&lt;/p&gt;

&lt;p align="justify"&gt;It’s not an hard problem to solve, though. A couple of &lt;a title="Extension Methods (C# Programming Guide)" href="http://msdn.microsoft.com/library/bb383977.aspx" target="_blank"&gt;extension method&lt;/a&gt; can solve it:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public static class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;CultureInfoExtensions
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlLanguage &lt;/span&gt;GetXmlLanguage(&lt;span style="color:blue;"&gt;this &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlLanguage&lt;/span&gt;.GetLanguage(culture.GetIetfLanguageTag());
    }

    &lt;span style="color:blue;"&gt;public static string &lt;/span&gt;GetIetfLanguageTag(&lt;span style="color:blue;"&gt;this &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="color:blue;"&gt;switch &lt;/span&gt;(culture.Name)
        {
            &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;zh-CHT&amp;quot;&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;return &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;zh-Hant&amp;quot;&lt;/span&gt;;
            &lt;span style="color:blue;"&gt;case &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;zh-CHS&amp;quot;&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;return &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;zh-Hans&amp;quot;&lt;/span&gt;;
            &lt;span style="color:blue;"&gt;default&lt;/span&gt;:
                &lt;span style="color:blue;"&gt;return &lt;/span&gt;culture.Name;
        }
    }
}&lt;/pre&gt;

&lt;p align="justify"&gt;And now the language of the root &lt;a title="Classe PhoneApplicationFrame" href="http://msdn.microsoft.com/library/microsoft.phone.controls.phoneapplicationframe(v=VS.92).aspx" target="_blank"&gt;phone application frame&lt;/a&gt; can be properly initialized:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;// Avoid double-initialization
// Do not add any additional code to this method
&lt;/span&gt;&lt;span style="color:blue;"&gt;private void &lt;/span&gt;InitializePhoneApplication()
{
    &lt;span style="color:#2b91af;"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;{0} &amp;gt;&amp;gt; InitializePhoneApplication&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now.Ticks);

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.phoneApplicationInitialized)
    {
        &lt;span style="color:blue;"&gt;return&lt;/span&gt;;
    }

    &lt;span style="color:green;"&gt;// Create the frame but don&amp;#39;t set it as RootVisual yet; this allows the splash
    // screen to remain active until the application is ready to render.
    &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.RootFrame = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RadPhoneApplicationFrame
        &lt;/span&gt;{
            Language = &lt;span style="color:#2b91af;"&gt;CultureInfo&lt;/span&gt;.CurrentUICulture.GetXmlLanguage()
        };

    &lt;span style="color:blue;"&gt;this&lt;/span&gt;.RootFrame.Navigated += CompleteInitializePhoneApplication;

    &lt;span style="color:green;"&gt;// Handle navigation failures
    &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    &lt;span style="color:green;"&gt;// Ensure we don&amp;#39;t initialize again
    &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.phoneApplicationInitialized = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;

&lt;hr /&gt;Resources: 

&lt;ul&gt;
  &lt;li&gt;&lt;a title="Creating Globally Aware Applications" href="http://msdn.microsoft.com/library/cc853414.aspx" target="_blank"&gt;Creating Globally Aware Applications&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="Localizing Silverlight-based Applications" href="http://msdn.microsoft.com/library/cc838238" target="_blank"&gt;Localizing Silverlight-based Applications&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="How to: Make XAML Content Localizable" href="http://msdn.microsoft.com/library/dd882554" target="_blank"&gt;How to: Make XAML Content Localizable&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="Globalization and Localization Overview for Windows Phone" href="http://msdn.microsoft.com/library/ff462083.aspx" target="_blank"&gt;Globalization and Localization Overview for Windows Phone&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="Globalization and Localization for Windows Phone" href="http://msdn.microsoft.com/library/ff637522.aspx" target="_blank"&gt;Globalization and Localization for Windows Phone&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="How to: Build a Globalized Application for Windows Phone" href="http://msdn.microsoft.com/library/ff637519.aspx" target="_blank"&gt;How to: Build a Globalized Application for Windows Phone&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="How to: Build a Localized Application for Windows Phone" href="http://msdn.microsoft.com/library/ff637520.aspx" target="_blank"&gt;How to: Build a Localized Application for Windows Phone&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="Code Samples for Windows Phone" href="http://msdn.microsoft.com/library/ff431744.aspx" target="_blank"&gt;Code Samples for Windows Phone : Globalization Sample&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1812543" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=Zn_1j6nQ8Ac:CsXv8ANBKDU:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=Zn_1j6nQ8Ac:CsXv8ANBKDU:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/Zn_1j6nQ8Ac" height="1" width="1"/&gt;</description><pubDate>Mon, 09 Jul 2012 00:46:51 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1812543</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1812543</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/07/09/how-to-make-xaml-content-globalizable-when-using-value-converters.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/07/09/how-to-make-xaml-content-globalizable-when-using-value-converters.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1811380</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/wMeNo6YWSk0/testing-for-continuous-delivery-with-visual-studio-2012-rc.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2012/default.aspx">VisualStudio2012</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TFS/default.aspx">TFS</category><title>Testing for Continuous Delivery with Visual Studio 2012 RC</title><description>&lt;p align="justify"&gt;&lt;a title="Testing for Continuous Delivery with Visual Studio 2012 RC" href="http://msdn.microsoft.com/library/jj159345" target="_blank"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" border="0" align="right" src="http://i.msdn.microsoft.com/dynimg/IC368873.png" alt="" /&gt;Microsoft&lt;/a&gt;&amp;#160;&lt;a title="Microsoft Patterns &amp;amp; Practices" href="http://msdn.microsoft.com/library/ff921345" target="_blank"&gt;Patterns &amp;amp; Practices&lt;/a&gt; has released a book with guidance on &lt;a title="Testing for Continuous Delivery with Visual Studio 2012 RC" href="http://msdn.microsoft.com/library/jj159345" target="_blank"&gt;Testing for Continuous Delivery with Visual Studio 2012 RC&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The book and its content can be found both in the &lt;a title="MSDN - Microsoft Developers Network" href="http://msdn.microsoft.com/" target="_blank"&gt;MSDN&lt;/a&gt;&amp;#160;&lt;a title="Testing for Continuous Delivery with Visual Studio 2012 RC" href="http://msdn.microsoft.com/library/jj159345" target="_blank"&gt;site&lt;/a&gt; and the &lt;a title="CodePlex" href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;&amp;#160;&lt;a title="Test Infrastructure Guidance" href="http://tig.codeplex.com/releases/view/77354" target="_blank"&gt;site&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;I’m deeply honored to have been part of the review panels.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1811380" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=wMeNo6YWSk0:Hn9UIUlkQHM:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=wMeNo6YWSk0:Hn9UIUlkQHM:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/wMeNo6YWSk0" height="1" width="1"/&gt;</description><pubDate>Wed, 20 Jun 2012 01:51:27 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1811380</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1811380</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/06/20/testing-for-continuous-delivery-with-visual-studio-2012-rc.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/06/20/testing-for-continuous-delivery-with-visual-studio-2012-rc.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1811013</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/9i5bpYfyR9I/people-for-windows-phone.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone7/default.aspx">WindowsPhone7</category><title>People+ For Windows Phone</title><description>&lt;p&gt;Recently, I’ve released a &lt;a href="http://www.windowsphone.com/"&gt;Windows Phone&lt;/a&gt; application to explore and use contact information.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this application I used components and/or guidance from:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://nuget.org/packages/Cimbalino.Phone.Toolkit"&gt;Cimbalino Windows Phone Toolkit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.syncfusion.com/downloads/metrostudio"&gt;Metro Studio&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/expression/products/Design_Overview.aspx"&gt;Microsoft&lt;sup&gt;®&lt;/sup&gt; Expression&lt;sup&gt;®&lt;/sup&gt; Blend&lt;sup&gt;®&lt;/sup&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/expression/products/Blend_Overview.aspx"&gt;Microsoft&lt;sup&gt;®&lt;/sup&gt; Expression&lt;sup&gt;®&lt;/sup&gt; Design&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/"&gt;Microsoft&lt;sup&gt;®&lt;/sup&gt; Visual Studio&lt;sup&gt;®&lt;/sup&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://nuget.org/packages/mvvmLight"&gt;MVVM Light&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://getpaint.net/"&gt;paint.net&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/gg577609"&gt;Reactive Extensions (Rx)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.techsmith.com/snagit.html"&gt;TechSmith&lt;sup&gt;®&lt;/sup&gt; SnagIt&lt;sup&gt;®&lt;/sup&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.telerik.com/"&gt;Telerik&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://templarian.com/"&gt;Templarian&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In future posts, I’ll be showing some tips, tricks and components I’ve used in this application.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;div&gt;   &lt;div style="display:inline;float:right;"&gt;     &lt;div style="text-align:center;margin:10px;clear:both;"&gt;&lt;a title="People+ for Windows Phone" href="http://windowsphone.com/s?appid=1a4657c6-43d2-4dbb-9281-2465dec5bfed" target="_blank"&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;" src="http://catalog.zune.net/v3.2/pt-PT/apps/1a4657c6-43d2-4dbb-9281-2465dec5bfed/primaryImage?width=240&amp;amp;height=240&amp;amp;resize=true" width="200" height="200" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;      &lt;div style="text-align:center;margin:10px;clear:both;"&gt;&lt;a href="http://windowsphone.com/s?appid=1a4657c6-43d2-4dbb-9281-2465dec5bfed"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="People+ for Windows Phone" border="0" alt="People+ for Windows Phone" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/paulomorgado.metablogapi/2061.Download_2D00_EN_2D00_Med_5F00_thumb_5F00_2CF8AB64.png" width="164" height="54" /&gt;&lt;/a&gt;&lt;/div&gt;      &lt;div style="text-align:center;margin:10px;clear:both;"&gt;&lt;a href="http://windowsphone.com/s?appid=1a4657c6-43d2-4dbb-9281-2465dec5bfed"&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;" title="People+ for Windows Phone" alt="People+ for Windows Phone" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/paulomorgado.metablogapi/0777.People_2D00_Plus_2D00_Tag_5F00_thumb_5F00_20F6BB30.png" width="120" height="120" /&gt;&lt;/a&gt;&lt;/div&gt;   &lt;/div&gt;    &lt;div style="display:inline;"&gt;     &lt;p align="justify"&gt;Explore and use your contacts’ information.&lt;/p&gt;      &lt;p&gt;Search contacts by:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;name &lt;/li&gt;        &lt;li&gt;phone number &lt;/li&gt;        &lt;li&gt;e-mail address &lt;/li&gt;        &lt;li&gt;physical address &lt;/li&gt;        &lt;li&gt;websites &lt;/li&gt;        &lt;li&gt;company &lt;/li&gt;        &lt;li&gt;job title &lt;/li&gt;        &lt;li&gt;significant others &lt;/li&gt;        &lt;li&gt;children &lt;/li&gt;        &lt;li&gt;notes &lt;/li&gt;     &lt;/ul&gt;      &lt;p&gt;* Trial limitations The trial version is fully functional but will show a purchase reminder and might show ads.&lt;/p&gt;      &lt;p&gt;* Application limitations&lt;/p&gt;      &lt;p&gt;The Windows Phone system imposes some limitations on application developers.&lt;/p&gt;      &lt;p&gt;It is not possible to:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;access twitter information &lt;/li&gt;        &lt;li&gt;access linkedin information &lt;/li&gt;        &lt;li&gt;uniquely identify the contact &lt;/li&gt;        &lt;li&gt;change or provide access to change the contact information &lt;/li&gt;     &lt;/ul&gt; * Privacy statement This application does not make any use of the contacts information other than displaying and searching it. When ads are displayed, however, device information might be sent to the ad provider (&lt;a title="smaato Privacy Policy" href="http://www.smaato.com/priv(smaato" target="_blank"&gt;smaato Privacy Policy&lt;/a&gt;). &lt;/div&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1811013" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=9i5bpYfyR9I:O5nwwXZRDcI:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=9i5bpYfyR9I:O5nwwXZRDcI:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/9i5bpYfyR9I" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Jun 2012 14:41:13 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1811013</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1811013</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/06/13/people-for-windows-phone.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/06/13/people-for-windows-phone.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1811008</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/IMAOL4sfzhw/hash-function-added-to-the-predicateequalitycomparer.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET4.0/default.aspx">.NET4.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><title>Hash Function Added To The PredicateEqualityComparer</title><description>&lt;p align="justify"&gt;Sometime ago I wrote a &lt;a title="PredicateEqualityComparer Class" href="http://paulomorgado.net/en/blog/archive/2010/04/08/linq-enhancing-distinct-with-the-predicateequalitycomparer.aspx" target="_blank"&gt;predicate equality comparer&lt;/a&gt; to be used with &lt;a title="Language-Integrated Query (LINQ)" href="http://msdn.microsoft.com/library/bb397926.aspx" target="_blank"&gt;LINQ&lt;/a&gt;’s &lt;a title="Distinct Method" href="http://msdn.microsoft.com/library/system.linq.enumerable.distinct.aspx" target="_blank"&gt;Distinct&lt;/a&gt; operator.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The &lt;a title="Distinct Method" href="http://msdn.microsoft.com/library/system.linq.enumerable.distinct.aspx" target="_blank"&gt;Distinct&lt;/a&gt; operator uses an instance of an internal &lt;strong&gt;Set&lt;/strong&gt; class to maintain the collection of distinct elements in the source collection which in turn checks the hash code of each element (by calling the &lt;a title="GetHashCode Method" href="http://msdn.microsoft.com/library/ms132155.aspx"&gt;GetHashCode&lt;/a&gt; method of the &lt;a title="IEqualityComparer Interface" href="http://msdn.microsoft.com/library/ms132151.aspx" target="_blank"&gt;equality comparer&lt;/a&gt;) and only if there’s already an element with the same hash code in the collection calls the &lt;a title="Equals Method" href="http://msdn.microsoft.com/library/ms132154.aspx"&gt;Equals&lt;/a&gt; method of the comparer to disambiguate.&lt;/p&gt;  &lt;p align="justify"&gt;At the time I provided only the possibility to specify the comparison predicate, but, in some cases, comparing a hash code instead of calling the provided comparer predicate can be a significant performance improvement, I’ve added the possibility to had a hash function to the &lt;a title="PredicateEqualityComparer Class" href="http://paulomorgado.net/en/blog/archive/2010/04/08/linq-enhancing-distinct-with-the-predicateequalitycomparer.aspx" target="_blank"&gt;predicate equality comparer&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;You can get the &lt;a title="Browse latest version" href="http://pmlinq.codeplex.com/SourceControl/BrowseLatest" target="_blank"&gt;updated code&lt;/a&gt; from the &lt;a title="PauloMorgado.Linq" href="http://pmlinq.codeplex.com/" target="_blank"&gt;PauloMorgado.Linq&lt;/a&gt; project on &lt;a title="CodePlex" href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1811008" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=IMAOL4sfzhw:EltO5GA_gzI:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=IMAOL4sfzhw:EltO5GA_gzI:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/IMAOL4sfzhw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Jun 2012 11:30:18 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1811008</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1811008</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/06/13/hash-function-added-to-the-predicateequalitycomparer.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/06/13/hash-function-added-to-the-predicateequalitycomparer.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810862</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/VNODOAxBrrM/wcf-http-user-agent-message-adapter-on-github-and-nuget.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WCF/default.aspx">WCF</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/GitHub/default.aspx">GitHub</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Nuget/default.aspx">Nuget</category><title>WCF HTTP User Agent Message Adapter On GitHub And Nuget</title><description>&lt;p align="justify"&gt;Some time ago, I wrote about &lt;a title="WCF: Building an HTTP User Agent Message Inspector" href="http://msmvps.com/blogs/paulomorgado/archive/2007/04/27/wcf-building-an-http-user-agent-message-inspector.aspx" target="_blank"&gt;building an HTTP user agent message adapter for WCF&lt;/a&gt;.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Now, Henk J MeuleKamp (&lt;a title="Henk J Meulekamp" href="http://twitter.com/hjmeulekamp" target="_blank"&gt;@hjmeulekamp&lt;/a&gt;) has published the code on GitHub (&lt;a title="Wcf Useragent C# Library" href="http://github.com/henkmeulekamp/WcfUserAgent" target="_blank"&gt;Wcf Useragent C# Library&lt;/a&gt;) and a usable library on Nuget (&lt;a title="Message Inspector for WCF to add Useragent header by configuration" href="http://nuget.org/packages/WcfUserAgent" target="_blank"&gt;Message Inspector for WCF to add Useragent header by configuration&lt;/a&gt;).&lt;/p&gt;  &lt;p align="justify"&gt;My thanks to Henk.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810862" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=VNODOAxBrrM:iPnswg4wCJM:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=VNODOAxBrrM:iPnswg4wCJM:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/VNODOAxBrrM" height="1" width="1"/&gt;</description><pubDate>Mon, 11 Jun 2012 01:22:23 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1810862</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1810862</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/06/11/wcf-http-user-agent-message-adapter-on-github-and-nuget.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/06/11/wcf-http-user-agent-message-adapter-on-github-and-nuget.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1810364</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/KTBL3fPRdNA/globalization-localization-and-why-my-application-stopped-launching.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodeProject/default.aspx">CodeProject</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Globalization/default.aspx">Globalization</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Localization/default.aspx">Localization</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsPhone7/default.aspx">WindowsPhone7</category><title>Globalization, Localization And Why My Application Stopped Launching</title><description>&lt;p align="justify"&gt;When I was localizing a &lt;a target="_blank" href="http://www.windowsphone.com/" title="Windows Phone"&gt;Windows Phone&lt;/a&gt; application I was developing, I set the argument on the constructor of the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.reflection.assemblycultureattribute.aspx" title="AssemblyCultureAttribute Class"&gt;AssemblyCultureAttribute&lt;/a&gt; for the neutral culture (&lt;strong&gt;en-US&lt;/strong&gt; in this particular case) for my application.&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;As it was late at night (or early in the dawn &lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/paulomorgado.metablogapi/2772.wlEmoticon_2D00_smile_5F00_0BAE22D9.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" /&gt;) I went to sleep and, on the next day, the application wasn&amp;rsquo;t launching although it compiled just fine.&lt;/p&gt;
&lt;p align="justify"&gt;I&amp;rsquo;ll have to confess that it took me a couple of nights to figure out what I had done to my application.&lt;/p&gt;
&lt;p align="justify"&gt;Have you figured out what I did wrong?&lt;/p&gt;
&lt;p align="justify"&gt;The documentation for the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.reflection.assemblycultureattribute.aspx" title="AssemblyCultureAttribute Class"&gt;AssemblyCultureAttribute&lt;/a&gt; states that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;The attribute is used by compilers to distinguish between a main assembly and a satellite assembly. A main assembly contains code and the neutral culture&amp;#39;s resources. A satellite assembly contains only resources for a particular culture, as in &lt;span style="font-family:Courier New;"&gt;[assembly:AssemblyCultureAttribute(&amp;quot;de&amp;quot;)]&lt;/span&gt;. Putting this attribute on an assembly and using something other than the empty string (&lt;span style="font-family:Courier New;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;) for the culture name will make this assembly look like a satellite assembly, rather than a main assembly that contains executable code. Labeling a traditional code library with this attribute will break it, because no other code will be able to find the library&amp;#39;s entry points at runtime.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;So, what I did was marking the once main assembly as a satellite assembly for the &lt;strong&gt;en-US&lt;/strong&gt; culture which made it impossible to find its entry point.&lt;/p&gt;
&lt;p align="justify"&gt;To set the the neutral culture for the assembly resources I should haveused (and eventually did) the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.resources.neutralresourceslanguageattribute.aspx" title="NeutralResourcesLanguageAttribute Class"&gt;NeutralResourcesLanguageAttribute&lt;/a&gt;. According to its documentation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;The &lt;strong&gt;NeutralResourcesLanguageAttribute&lt;/strong&gt; attribute informs the &lt;a href="http://msdn.microsoft.com/en-US/library/system.resources.resourcemanager.aspx"&gt;ResourceManager&lt;/a&gt; of the application&amp;#39;s default culture, and also informs the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.resources.resourcemanager.aspx" title="ResourceManager Class"&gt;ResourceManager&lt;/a&gt; that the default culture&amp;#39;s resources are found in the main application assembly. When looking up resources in the same culture as the default culture, the &lt;a target="_blank" href="http://msdn.microsoft.com/library/system.resources.resourcemanager.aspx" title="ResourceManager Class"&gt;ResourceManager&lt;/a&gt; automatically uses the resources located in the main assembly instead of searching for a satellite assembly. This improves lookup performance for the first resource you load, and can reduce your working set.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1810364" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=KTBL3fPRdNA:_QM4hOpoU9g:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=KTBL3fPRdNA:_QM4hOpoU9g:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/KTBL3fPRdNA" height="1" width="1"/&gt;</description><pubDate>Tue, 29 May 2012 00:20:00 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1810364</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1810364</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/05/29/globalization-localization-and-why-my-application-stopped-launching.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/05/29/globalization-localization-and-why-my-application-stopped-launching.aspx</feedburner:origLink></item><item><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1807937</guid><link>http://feeds.paulomorgado.net/~r/PauloMorgado/Blogs/EN/~3/CBUT-ED7fbw/patterns-amp-practices-symposium-online-april-24-2012.aspx</link><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Events/default.aspx">Events</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><title>Patterns &amp; Practices Symposium Online - April 24, 2012</title><description>&lt;p&gt;&lt;a title="patterns &amp;amp; practices Symposium Online, April 24, 2012" href="http://msdn.microsoft.com/en-us/practices/dd578307" target="_blank"&gt;&lt;img title="patterns &amp;amp; practices Symposium Online, April 24, 2012" alt="patterns &amp;amp; practices Symposium Online, April 24, 2012" src="http://i.msdn.microsoft.com/dd578307.SympposiumAgenda-lg(en-us,MSDN.10).png" width="924" height="120" /&gt;&lt;/a&gt;&lt;img src="http://c.statcounter.com/6351077/0/9a1b981a/1/" alt="StatCounter"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Microsoft patterns &amp;amp; practices symposiums are held regularly in the U.S. and abroad. Most of the speakers are from the Microsoft patterns &amp;amp; practices (p&amp;amp;p) team. The event is aimed primarily at software architects, developers, and technical managers. patterns &amp;amp; practices develops applied engineering guidelines to help software developers and architects build great solutions on the Microsoft platform.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a title="Patterns &amp;amp; Practices Symposium Online - April 24, 2012" href="http://msdn.microsoft.com/en-us/practices/dd578307" target="_blank"&gt;Read more…&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1807937" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.paulomorgado.net/~ff/PauloMorgado/Blogs/EN?a=CBUT-ED7fbw:o7ZHyT53r_g:3yuytNF0dJw"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PauloMorgado/Blogs/EN?i=CBUT-ED7fbw:o7ZHyT53r_g:3yuytNF0dJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PauloMorgado/Blogs/EN/~4/CBUT-ED7fbw" height="1" width="1"/&gt;</description><pubDate>Mon, 26 Mar 2012 00:13:28 Z</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paulo Morgado</dc:creator><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1807937</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1807937</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2012/03/26/patterns-amp-practices-symposium-online-april-24-2012.aspx#comments</comments><feedburner:origLink>http://msmvps.com/blogs/paulomorgado/archive/2012/03/26/patterns-amp-practices-symposium-online-april-24-2012.aspx</feedburner:origLink></item></channel></rss>
