<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Alex Golesh&amp;#39;s Blog About Silverlight Development</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/</link><description>&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (You.InterestedIn(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] {&lt;span style="color:#006080;"&gt;&amp;quot;Windows Phone&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;XAML&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.NET Developing&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;CSharp&amp;quot;&lt;/span&gt;}))
     Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Welcome to my blog!&amp;quot;&lt;/span&gt;);
&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;
     Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Where do you want to go today?&amp;quot;&lt;/span&gt;);
</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>What’s New in Windows Phone 8 (6 out of 8)–Location services and maps</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/06/what-s-new-in-windows-phone-8-6-out-of-8-location-services-and-maps.aspx</link><pubDate>Tue, 06 Nov 2012 15:56:35 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1420007</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1420007</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1420007</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/06/what-s-new-in-windows-phone-8-6-out-of-8-location-services-and-maps.aspx#comments</comments><description>&lt;p&gt;Windows Phone 8 brings long awaited updates to location services and brand new map control (with associated services) which is based on Nokia maps.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Location services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So what’s new in location services. First of all – the new WinRT API which is shared with Windows 8. To use location services application must declare the following capability in application manifest:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Capability&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ID_CAP_LOCATION&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The “main” class – &lt;font face="Consolas"&gt;Geolocator&lt;/font&gt; – belongs to &lt;font face="Consolas"&gt;Windows.Devices.Geolocation&lt;/font&gt; namespace and enables location tracking in good old “events” way and also new &lt;font face="Consolas"&gt;async&lt;/font&gt; model as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;Geoposition currentPosition = await geoLocator.GetGeopositionAsync();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;// or&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;Geoposition currentPosition = await geoLocator.GetGeopositionAsync(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(30));&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;&lt;font face="Consolas"&gt;geoLocator&lt;/font&gt; is an instance of &lt;font face="Consolas"&gt;Geolocator&lt;/font&gt; object. Second call limits the results age and awaiting timeout.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The object itself could be activated as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (geoLocator == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    geoLocator = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.Devices.Geolocation.Geolocator();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    geoLocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.High; &lt;span style="color:#008000;"&gt;//Request high accuracy from GPS device&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    geoLocator.DesiredAccuracyInMeters = 1; &lt;span style="color:#008000;"&gt;//Must have very precise for walking/running/biking tracking. Could use values of 50-100 for car&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    geoLocator.ReportInterval = 1000; &lt;span style="color:#008000;"&gt;//1 second between updates usually is needed for constant updates for scenarios such as walking/running/biking tracking.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    geoLocator.StatusChanged += geoLoc_StatusChanged; &lt;span style="color:#008000;"&gt;//Subscribe for status changes&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    geoLocator.PositionChanged += geoLoc_PositionChanged; &lt;span style="color:#008000;"&gt;//Subscribe for continues position changes updates&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The &lt;font face="Consolas"&gt;PositionChanged&lt;/font&gt; result brings information such as &lt;font face="Consolas"&gt;CivicAddress&lt;/font&gt;, &lt;font face="Consolas"&gt;Coordinate&lt;/font&gt; information with &lt;font face="Consolas"&gt;Latitude, Longitude, Speed, Heading, Accuracy, Altitude&lt;/font&gt;, etc. fields which crucial for location-aware applications.&lt;/p&gt;

&lt;p&gt;Sample code snippet for &lt;font face="Consolas"&gt;PositionChanged&lt;/font&gt; event:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (position.CivicAddress != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    Debug.WriteLine(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;City = {0}, Postal Code = {1}, State = {2}, Country = {3}&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                                  position.CivicAddress.City, &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                                  position.CivicAddress.PostalCode, &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                                  position.CivicAddress.State, &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                                  position.CivicAddress.Country));&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;Dispatcher.BeginInvoke(() =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    txtLat.Text = position.Coordinate.Latitude.ToString();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    txtLon.Text = position.Coordinate.Longitude.ToString();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    txtSpeed.Text = position.Coordinate.Speed.HasValue ? position.Coordinate.Speed.ToString() : &lt;span style="color:#006080;"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    txtHeading.Text = position.Coordinate.Heading.HasValue ? position.Coordinate.Heading.ToString() : &lt;span style="color:#006080;"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;});&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Note: this sample code simply outputs the info on screen. While this change in API is interesting, the real power comes with ability to track the location when application is not active – works in background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As you probably remember, on Windows Phone only one app runs in the foreground – the one which is visible on screen. When user navigates away from an app (either by pressing the Start button or by launching another app) the current app is suspended and may be terminated and tombstoned. In Windows Phone 8, a location-tracking app can continue to run in the background after the user navigates away, as long as the app continues to actively track location. This feature is absolutely must for scenarios such as an app that provides turn-by-turn directions. Let’s see how to enable the background execution.&lt;/p&gt;

&lt;p&gt;First of all – to work in background the application &lt;em&gt;&lt;u&gt;must&lt;/u&gt;&lt;/em&gt; actively track the location: use &lt;font face="Consolas"&gt;Geolocator&lt;/font&gt;.&lt;/p&gt;

&lt;p&gt;Also, to successfully use the &lt;font face="Consolas"&gt;Geolocator&lt;/font&gt; application must declare location capability (&lt;font face="Consolas"&gt;ID_CAP_LOCATION&lt;/font&gt;) as described above.&lt;/p&gt;

&lt;p&gt;Next, application must require background execution in DefaultTask definition in application manifest as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DefaultTask&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;NavigationPage&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;MainPage.xaml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;BackgroundExecution&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ExecutionType&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LocationTracking&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;BackgroundExecution&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DefaultTask&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;If more than one application requires background execution, only last one will be allowed to work in background. All previous/other “background executions” will be stopped.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Last, but not least, the application must handle &lt;font face="Consolas"&gt;RunningInBackground&lt;/font&gt; event which raised when location-tracking application transitions to background. When this event is raised, the application should stop all tasks that are not related to location tracking, including updates to the app’s UI. Subscribing to this even is done through App.xaml:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;shell:PhoneApplicationService&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#ff0000;"&gt;Launching&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Application_Launching&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Closing&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Application_Closing&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#ff0000;"&gt;Activated&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Application_Activated&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Deactivated&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Application_Deactivated&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;RunningInBackground&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;PhoneApplicationService_RunningInBackground&amp;quot;&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Handling the event in code:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; isRunningInBackground = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; PhoneApplicationService_RunningInBackground(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, RunningInBackgroundEventArgs e)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    isRunningInBackground = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;//Stop all unnecessary processes&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Application_Activated(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, ActivatedEventArgs e)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    isRunningInBackground = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In my simple scenario, the location updates from background execution will be used to update application’s main tile:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;FlipTileData ftd = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; FlipTileData()&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    Count = updatesCount,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    Title = &lt;span style="color:#006080;"&gt;&amp;quot;Position updated&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    BackTitle = position.Coordinate.Timestamp.ToLocalTime().ToString(),&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    BackContent = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;New position is LAT: {0}, LON: {1}&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                          position.Coordinate.Latitude,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                          position.Coordinate.Longitude),&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    WideBackContent = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;New position is LAT: {0}, LON: {1}. Moving with speed of {2} m/s with course of {3}°&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                          position.Coordinate.Latitude,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                          position.Coordinate.Longitude,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                          position.Coordinate.Speed.HasValue ? position.Coordinate.Speed.ToString() : &lt;span style="color:#006080;"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                          position.Coordinate.Heading.HasValue ? position.Coordinate.Heading.ToString() : &lt;span style="color:#006080;"&gt;&amp;quot;UNKNOWN&amp;quot;&lt;/span&gt;),&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;};&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;mainTile.Update(ftd);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Those updates produces the following results:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2143A2CD.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_0E227621.png" width="273" height="140" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_7F77CA3B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_57651B1C.png" width="273" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;please see the video at the end of this post to see the application working in background&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In additional to great improvements to location services described above, Windows Phone 8 switches map component to Nokia maps. The new control could be found in &lt;font face="Consolas"&gt;Microsoft.Phone.Maps.Controls&lt;/font&gt; namespace (&lt;font face="Consolas"&gt;Microsoft.Phone.Maps&lt;/font&gt; assembly) and could be instantiated either from XAML or code behind. Sample XAML initialization:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Controls:Map&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;              &lt;span style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;450&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;map&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;              &lt;span style="color:#ff0000;"&gt;PedestrianFeaturesEnabled&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LandmarksEnabled&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ZoomLevel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;17&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;the controls namespace defined in XAML’s header file as follows:&lt;/em&gt;&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;xmlns:Controls=&amp;quot;clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps&amp;quot;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once defined, the map’s properties could be also altered from code behind:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;map.Pitch = 40;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Map supports different cartographic modes (Road, Hybrid, Areal, Terrain), color modes (Light, Dark), presenting landmarks/pedestrian features, pitch and rotation:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_7D5ACB72.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_49B25F14.png" width="339" height="603" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, map supports multiple overlay layers which could be presented over map (car icon on image above) as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;BitmapImage bitmapImage = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; BitmapImage(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;/Images/car.png&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;Image img = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Image();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;img.Source = bitmapImage;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;mapOverlay = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MapOverlay();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;mapOverlay.PositionOrigin = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Point(0.5, 0.5);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;mapOverlay.Content = img;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;mapOverlay.GeoCoordinate = map.Center;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;MapLayer MyLayer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MapLayer();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;MyLayer.Add(mapOverlay);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;map.Layers.Add(MyLayer);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Last, the map provides services, such as &lt;font face="Consolas"&gt;GeocodeQuery, ReverseGeocodeQuery&lt;/font&gt; and &lt;font face="Consolas"&gt;RouteQuery&lt;/font&gt;. Latter could be used to calculate (and display on ap) route between two given geo coordinates as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;RouteQuery routeQuery = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; RouteQuery();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;routeQuery.QueryCompleted += routeQuery_QueryCompleted;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; routeQuery_QueryCompleted(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, QueryCompletedEventArgs&amp;lt;Route&amp;gt; e)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    Route theRoute = e.Result;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    MapRoute calculatedMapRoute = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MapRoute(theRoute);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    map.AddRoute(calculatedMapRoute);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; btnShowRoute_Click(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!routeQuery.IsBusy)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        List&amp;lt;GeoCoordinate&amp;gt; routeCoordinates = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;GeoCoordinate&amp;gt;();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        routeCoordinates.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GeoCoordinate(48.860339, 2.337599)); &lt;span style="color:#008000;"&gt;//Eiffel Tower coordinates&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        routeCoordinates.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GeoCoordinate(48.8583, 2.2945)); &lt;span style="color:#008000;"&gt;//Louvre coordinates&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        routeQuery.Waypoints = routeCoordinates;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        routeQuery.QueryAsync();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        map.Center = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GeoCoordinate(48.8583, 2.2945); &lt;span style="color:#008000;"&gt;//Center map on first coordinates&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Clicking the “Show Route” button calculates the route and shows it on map:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_73462A47.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_2AAC3B76.png" width="339" height="607" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The navigation instructions are also available and could be presented to user as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;List&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt; legsList = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (RouteLeg leg &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; MyRoute.Legs)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;   &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (RouteManeuver routeManeuver &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; leg.Maneuvers)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;      legsList.Add(routeManeuver.InstructionText);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;   }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//lstRouteList is a list showing the legs&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;lstRouteList.ItemsSource = legsList;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Working sample application video:&lt;/p&gt;

&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f25e583b-469a-49b3-b345-ee629b605c11" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt;&lt;div&gt;&lt;object width="811" height="456"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KIqourE00U4?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KIqourE00U4?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="811" height="456"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:811px;clear:both;font-size:.8em;"&gt;Sample location aware application&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Next time I will blog about in-app-purchases (IAP) and new &lt;font face="Consolas"&gt;Windows.ApplicationModel.Store&lt;/font&gt; namespace shared with Windows 8.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Stay tuned,&lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1420007" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Location/default.aspx">Location</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/wp8dev/default.aspx">wp8dev</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Maps/default.aspx">Maps</category></item><item><title>What’s New in Windows Phone 8 (5 out of 8)–Quick tip: creating hybrid applications</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/05/what-s-new-in-windows-phone-8-5-out-of-8-quick-tip-creating-hybrid-applications.aspx</link><pubDate>Mon, 05 Nov 2012 20:30:02 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1415923</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1415923</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1415923</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/05/what-s-new-in-windows-phone-8-5-out-of-8-quick-tip-creating-hybrid-applications.aspx#comments</comments><description>&lt;p&gt;One important feature in Windows Phone 8 is ability to develop high performance applications using Direct3D graphics and C++. While this feature clearly targets game developers, many applications could also gain performance combining native code with C++ components. Moreover, even when developing XAML/C# applications, it is possible to fully leverage modern GPU in Windows Phone 8 device by mixing XAML flexibility with Direct3D graphics.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;: &lt;em&gt;Pure native development using Direct3D are not covered in this post. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Let’s overview two other options: first is to use Direct3D graphics is XAML/C# application. Windows Phone 8 SDK provides very good starting point for such application:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_36936699.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_54FDA782.png" width="1198" height="829" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Application created with this template combines standard Windows Phone 8 XAML application and WinRT native component. To integrate Direct3D surface into managed application, use new &lt;font face="Consolas"&gt;DrawingSurface&lt;/font&gt; XAML element. As standard XAML element it supports all standard XAML properties incl. &lt;font face="Consolas"&gt;Projection&lt;/font&gt; and &lt;font face="Consolas"&gt;RenderTransform&lt;/font&gt; and plays nicely with other XAML elements in layout. The following code snippet, for example, produce image below:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Transparent&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;DrawingSurface&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.Projection&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;PlaneProjection&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;CenterOfRotationX&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.5&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;CenterOfRotationY&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.5&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;CenterOfRotationZ&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.5&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                                &lt;span style="color:#ff0000;"&gt;RotationX&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;-30&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;RotationY&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;RotationZ&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.Projection&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.RenderTransformOrigin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Point&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;X&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.5&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Y&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.5&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.RenderTransformOrigin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.RenderTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;CompositeTransform&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Rotation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;-25&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ScaleX&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;.7&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ScaleY&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;-1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TranslateY&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;20&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface.RenderTransform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DrawingSurface&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;textBlock&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Hello from Windows Phone 8!&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;25&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Top&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Left&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;500&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;About&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Bottom&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Click&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Button_Click_1&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_4C99D22B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_3978A57F.png" width="339" height="607" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole idea of this “mix” is very similar to hybrid Silverlight &amp;amp; XNA applications introduces back in Windows Phone 7.5. &lt;/p&gt;

&lt;p&gt;The &lt;font face="Consolas"&gt;DrawingSurface&lt;/font&gt; is initialized with Windows Phone Runtime object that implements the &lt;font face="Consolas"&gt;IDrawingSurfaceProvider&lt;/font&gt; interface. The default templates provides sample of such component which implements 3D cube render. For more info please refer to documentation.&lt;/p&gt;

&lt;p&gt;Second option available for developers is to integrate/reuse native code containing business logic with Windows 8 other other platforms. Also, in many cases integrating native code (especially for complex algorithmic manipulations) could add noticeable performance boost to application. Let’s see how to achieve this.&lt;/p&gt;

&lt;p&gt;My sample application uses “heavy” math calculations as managed component:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; ManagedLibrary&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ManagedCalculator&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; Factorial(&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; n)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;           &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; nfac = 1;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 2; i &amp;lt; n + 1; i++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                nfac *= i;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; nfac;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;As you see, this code calculates factorial for given number.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;: &lt;em&gt;the factorial calculation was &lt;u&gt;not&lt;/u&gt; implemented as recursive function to be fully compatible with native code presented below&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The managed library used to calculate the factorials – let’s pretend it is a part of application’s business logic – as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;ManagedCalculator calc = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ManagedCalculator();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;System.Diagnostics.Stopwatch sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Diagnostics.Stopwatch();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; ticks = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; j = 0; j &amp;lt; numOfTrials; j++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    sw.Start();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; maxRuns; i++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        calc.Factorial(rnd.Next(maxFactorialOf));&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    sw.Stop();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    ticks += sw.ElapsedTicks;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    sw.Reset();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;txtManaged.Text = &lt;span style="color:#006080;"&gt;&amp;quot;Average calculation time was &amp;quot;&lt;/span&gt; + ticks / numOfTrials + &lt;span style="color:#006080;"&gt;&amp;quot; ticks&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code snippet invokes factorial calclation for fandom number given number of runs (&lt;font face="Consolas"&gt;maxRuns&lt;/font&gt;) for known number of trials (&lt;font face="Consolas"&gt;numOfTrials&lt;/font&gt;) and caluclates average runtime (in ticks).&lt;/p&gt;

&lt;p&gt;Let’s have exact same functionality as managed WinRT component. To do it, we need to add new project and reference it from the applcation:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_0A46B9E8.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_48CC078E.png" width="1198" height="829" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The header file for this component looks super simple:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; NativeLibrary&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ref &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; NativeCalculator sealed&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        NativeCalculator();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        int64 Factorial(int64 n);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    };&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And implemntation class is also very simple:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#cc6633;"&gt;#include&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;pch.h&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#cc6633;"&gt;#include&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;NativeLibrary.h&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; NativeLibrary;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; Platform;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;NativeCalculator::NativeCalculator()&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;int64 NativeCalculator::Factorial(int64 n)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; nfac=1;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i=2; i &amp;lt; n+1; i++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    { &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        nfac *= i; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; nfac;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;that factorial code is exact the same as in managed code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once native component is ready it could be referenced from main app:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_353EA7ED.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6D10EC10.png" width="348" height="251" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and used as standard managed component:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;NativeCalculator calc = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NativeCalculator();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;System.Diagnostics.Stopwatch sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.Diagnostics.Stopwatch();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;//Warm up run&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;calc.Factorial(10);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt; ticks = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; j = 0; j &amp;lt; numOfTrials; j++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    sw.Start();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; maxRuns; i++)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        calc.Factorial(rnd.Next(maxFactorialOf));&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    sw.Stop();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    ticks += sw.ElapsedTicks;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    sw.Reset();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;txtNative.Text = &lt;span style="color:#006080;"&gt;&amp;quot;Average calculation time was &amp;quot;&lt;/span&gt; + ticks / numOfTrials + &lt;span style="color:#006080;"&gt;&amp;quot; ticks&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;, that again, &lt;em&gt;only difference is the type of created object&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Runnig this application reveals interesting facts – the bigger number we are trying to calculate factorial for, the bigger gain in performance we are getting with native code.&lt;/p&gt;

&lt;p&gt;With &lt;font face="Consolas"&gt;maxFactorialOf = 10&lt;/font&gt; the results are not in favor of native code:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_4C1D7969.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_20007C78.png" width="339" height="607" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If setting the &lt;font face="Consolas"&gt;maxFactorialOf = 100&lt;/font&gt;, the results are different and while still comparable, the native code clearly wins:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_62FC4AE5.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_0FA504BF.png" width="340" height="609" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting &lt;font face="Consolas"&gt;maxFactorialOf = 1000&lt;/font&gt; shows, that native is clearly faster – in this case almost twice faster than managed code:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_477748E2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_7B3F3F33.png" width="341" height="608" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting &lt;font face="Consolas"&gt;maxFactorialOf = 10000&lt;/font&gt; allwos native code shine and beat native code completely:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_4C0D539C.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_720303F2.png" width="339" height="606" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does it means, that all calculations (even smallest one) should be moved to managed code, just because it is faster? Not necessary. If you are migrating from another platform and have logic already written using native code then the answer probably yes (giving the fact, that native development not as easy as managed one). If you already using managed code your probably not necessary will gain major performance boost just by rewriting some of the business logic as native library. You could try, but “your mileage may vary”. One thing is for sure – it could introduce more bugs related to new native component.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;That’s it for this post. Next time I will blog about location services and new map functionality.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Stay tuned,&lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1415923" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/wp8dev/default.aspx">wp8dev</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Native+code/default.aspx">Native code</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Hybrid+apps/default.aspx">Hybrid apps</category></item><item><title>What’s New in Windows Phone 8 (4 out of 8)–Protocol handler and file extensions</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/02/what-s-new-in-windows-phone-8-4-out-of-8-protocol-handler-and-file-extensions.aspx</link><pubDate>Fri, 02 Nov 2012 16:23:01 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1403865</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1403865</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1403865</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/02/what-s-new-in-windows-phone-8-4-out-of-8-protocol-handler-and-file-extensions.aspx#comments</comments><description>&lt;p&gt;This post is dedicated to new extensibility feature – ability to associate file extension and protocol type to automatically launch your app when another app launches a specific file type or URI. When launched, a deep link URI is used to send the file (a reference to the file) or URI to application. You can also use the association launching API to launch another app in the same way.&lt;/p&gt;  &lt;p&gt;File type association is useful when your app need automatically launch on invoking specific file type from email attachment, NFC tag, text message, another application.&lt;/p&gt;  &lt;p&gt;Protocol association is useful when your application need automatically launch on invoking specific URI, such as mailto://, http://, etc.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;File associations&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Registration to file type (file extension) achieved via &lt;font face="Consolas"&gt;FileTypeAssociation&lt;/font&gt; element in &lt;font face="Consolas"&gt;Extensions&lt;/font&gt; element of application manifest. The following code snippet registers application to handle files with “.smpl” and “.sample” extensions:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileTypeAssociation&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SampleLaunch&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TaskID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;NavUriFragment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;fileToken=%s&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#008000;"&gt;&amp;lt;!--&amp;lt;Logos&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;    &amp;lt;Logo Size=&amp;quot;Small&amp;quot;&amp;gt;small.png&amp;lt;/Logo&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;    &amp;lt;Logo Size=&amp;quot;Medium&amp;quot;&amp;gt;medium.png&amp;lt;/Logo&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;    &amp;lt;Logo Size=&amp;quot;Large&amp;quot;&amp;gt;large.png&amp;lt;/Logo&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;  &amp;lt;/Logos&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;SupportedFileTypes&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;.smpl&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;.sample&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;SupportedFileTypes&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;FileTypeAssociation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Please note optional &lt;font face="Consolas"&gt;Logos&lt;/font&gt; section (commented in sample) – this section lists an image file to appear beside a file. The files in this section sized/used as follows:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;Size&lt;/td&gt;

      &lt;td valign="top"&gt;Image dimensions&lt;/td&gt;

      &lt;td valign="top"&gt;Usage&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;Small&lt;/td&gt;

      &lt;td valign="top"&gt;33x33&lt;/td&gt;

      &lt;td valign="top"&gt;Email attachments&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;Medium&lt;/td&gt;

      &lt;td valign="top"&gt;69x69&lt;/td&gt;

      &lt;td valign="top"&gt;Office hub files list&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;Large&lt;/td&gt;

      &lt;td valign="top"&gt;176x176&lt;/td&gt;

      &lt;td valign="top"&gt;IE download list&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;When the application is launched to handle a particular file type, a deep link URI passed to the application. The URI looks like the following:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;/FileTypeAssociation?fileToken={TOKEN_GUID}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Within the URI, the &lt;font face="Consolas"&gt;FileTypeAssociation&lt;/font&gt; string designates that the source of the URI is a file association and the &lt;font face="Consolas"&gt;fileToken&lt;/font&gt; parameter contains the file token GUID. Those parameters could be easily parsed and rerouted to internal handler page.&lt;/p&gt;

&lt;p&gt;Usually, to handle multiple URI types application defines URI mapper class which parses the inbounding URI and reroutes to application’s page. The sample URI mapper class to handle such URI could look like the following code snippet:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; CustomUriMapper : UriMapperBase&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; TargetFilePageName = &lt;span style="color:#006080;"&gt;&amp;quot;FilePage.xaml&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; FileTemplate = &lt;span style="color:#006080;"&gt;&amp;quot;/FileTypeAssociation?fileToken=&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; Uri MapUri(Uri uri)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; tempUri = HttpUtility.UrlDecode(uri.ToString());&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (tempUri.Contains(&lt;span style="color:#006080;"&gt;&amp;quot;/FileTypeAssociation&amp;quot;&lt;/span&gt;))&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; GetFileMappedUri(tempUri);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; uri;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Uri GetMappedUri(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;this code is partial, application logic is omitted for code brevity&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To URI mapper class used in app by assigning it to &lt;font face="Consolas"&gt;RootFrame.UriMapper&lt;/font&gt; property in App.xaml.cs after initializing &lt;font face="Consolas"&gt;RootFrame &lt;/font&gt;object:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;RootFrame = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PhoneApplicationFrame();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;RootFrame.Navigated += CompleteInitializePhoneApplication;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;strong&gt;&lt;u&gt;RootFrame.UriMapper = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; CustomUriMapper();&lt;/u&gt;&lt;/strong&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;// Handle navigation failures&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;RootFrame.NavigationFailed += RootFrame_NavigationFailed;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;//..&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once application launched from file association, the URI mapper will intercept the URI and reroute (in sample code above) to FilePage.xaml page. To open the file by received file association, use &lt;font face="Consolas"&gt;SharedStorageAccessManager&lt;/font&gt; from &lt;font face="Consolas"&gt;Windows.Phone.Storage.SharedAccess&lt;/font&gt; namespace. &lt;font face="Consolas"&gt;SharedStorageAccessManager&lt;/font&gt; provides access to files that have been shared with a file association:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//Get token from query string&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; fileToken = NavigationContext.QueryString[&lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;];&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//Resolve filename&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;var filename = SharedStorageAccessManager.GetSharedFileName(fileToken);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//Copy file to local folder&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;var file = await SharedStorageAccessManager.CopySharedFileAsync(Windows.Storage.ApplicationData.Current.LocalFolder,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                                                                    fileToken + &lt;span style="color:#006080;"&gt;&amp;quot;.smpl&amp;quot;&lt;/span&gt;, Windows.Storage.NameCollisionOption.ReplaceExisting,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                                                                    fileToken);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//Open local file&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;var content = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Testing file association is easy with &lt;font face="Consolas"&gt;Launcher&lt;/font&gt; class from &lt;font face="Consolas"&gt;System.Windows&lt;/font&gt; namespace. It provides &lt;font face="Consolas"&gt;LaunchFileAsync&lt;/font&gt; function which starts default app associated with specified file type:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;StorageFile recipeFile = await local.GetFileAsync(&lt;span style="color:#006080;"&gt;&amp;quot;SampleFile.smpl&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; != recipeFile)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    await Windows.System.Launcher.LaunchFileAsync(recipeFile);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;this functionality is launched from &lt;u&gt;another&lt;/u&gt; application which serves as tester app for real application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protocol associations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A protocol association allows your app to automatically launch when another app launches a special URI. This special URI could look like the following (using in sample for this post):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;sample://showSample?ID=1004&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To handle protocol, application must manifest new extra in application manifest must (in Extras section):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Protocol&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;sample&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TaskID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;NavUriFragment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;encodedLaunchUri=%s&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this code snippet “sample” is the name of custom protocol which will be used to launch the application.&lt;/p&gt;

&lt;p&gt;Once user clicks on hyper link with this protocol, or other application invokes navigation to such protocol the application starts with following deep link URI passed to the application:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;/Protocol?encodedLaunchUri=sample://showSample/?ID=1234&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Like in file association scenario, it is easy to intercept such links with URI mapper and reroute to internal page in application:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; Uri MapUri(Uri uri)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; tempUri = HttpUtility.UrlDecode(uri.ToString());&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (tempUri.Contains(&lt;span style="color:#006080;"&gt;&amp;quot;/Protocol&amp;quot;&lt;/span&gt;))&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; GetMappedUri(tempUri);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; uri;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Uri GetMappedUri(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; uri)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The major difference from file association is that the amount information in URI is much more limited than in file.&lt;/p&gt;

&lt;p&gt;To test the application you can create simple HTML file and host on some webhosting (for example this post uses the following HTML file hosted at &lt;a href="http://www.alexgolesh.com/sample.html"&gt;http://www.alexgolesh.com/sample.html&lt;/a&gt;:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Sample launcher&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;h1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Protocol and File extenstion handlers sample&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;h1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;h2&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;This section invokes &amp;quot;sample://&amp;quot; protocol for my blog sample.&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;h2&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;sample://showSample?ID=1234&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Click here to launch blog sample&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Alternatively, protocol handler can be invoking using same &lt;font face="Consolas"&gt;Launcher&lt;/font&gt; class from &lt;font face="Consolas"&gt;System.Windows&lt;/font&gt; namespace as for file association. It provides &lt;font face="Consolas"&gt;LaunchUriAsync&lt;/font&gt; function which starts default app associated with protocol:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;Uri uri = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;sample://showSample?ID=1004&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;Windows.System.Launcher.LaunchUriAsync(uri);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;this functionality is launched from &lt;u&gt;another&lt;/u&gt; application which serves as tester app for real application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Working sample presented at the following vide&lt;/p&gt;

&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7622de19-4f47-492d-9633-334fc658fa76" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt;&lt;div&gt;&lt;object width="927" height="572"&gt;&lt;param name="movie" value="http://www.youtube.com/v/R5Nj2nMZVcE?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/R5Nj2nMZVcE?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="927" height="572"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:927px;clear:both;font-size:.8em;"&gt;Video of file associations and protocol handler sample&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Next time I will blog about hybrid applications which combines native and managed code together.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Stay tuned,&lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1403865" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/File+extension/default.aspx">File extension</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Protocol+handler/default.aspx">Protocol handler</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/App-to-app+communication/default.aspx">App-to-app communication</category></item><item><title>What’s New in Windows Phone 8 (3 out of 8)–Voice Recognition</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/01/what-s-new-in-windows-phone-8-3-out-of-8-voice-recognition.aspx</link><pubDate>Thu, 01 Nov 2012 17:17:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1400683</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1400683</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1400683</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/11/01/what-s-new-in-windows-phone-8-3-out-of-8-voice-recognition.aspx#comments</comments><description>&lt;p&gt;This post dedicated to additional interesting feature in Windows Phone 8 – voice recognition and speech synthesizing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Speech synthesizing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Let’s start from speech synthesizing. The functionality localized in Windows.Phone.Speech.Synthesis namespace. Using classes in this namespace you can create text-to-speech (TTS) scenarios in your application. The functionality enables read some document identified by URI, string of text with SSML markup or plain text. My sample focuses on plain text scenario.&lt;/p&gt;  &lt;p&gt;Class responsible for speech synthesizing is &lt;font face="Consolas"&gt;SpeechSynthesizer&lt;/font&gt;. To speak plain text use code snippet below:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;   &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;     &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;SpeechSynthesizer synth = &lt;span&gt;new&lt;/span&gt; SpeechSynthesizer();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;await synth.SpeakTextAsync(&lt;span&gt;&amp;quot;Hello from Windows Phone 8&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Speech synthesizer supports changing speech voice from system installed voice. The following code snippet select random voice and speaks out greeting text using this voice:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;var voices = Windows.Phone.Speech.Synthesis.InstalledVoices.All;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;int&lt;/span&gt; voiceNumber = rnd.Next(voices.Count);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;synth.SetVoice(voices[voiceNumber]);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;CultureInfo ci = &lt;span&gt;new&lt;/span&gt; CultureInfo(voices[voiceNumber].Language);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;string&lt;/span&gt; lang = ci.EnglishName;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;int&lt;/span&gt; pos = ci.EnglishName.IndexOf(&lt;span&gt;&amp;quot;(&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;if&lt;/span&gt; (pos &amp;gt; 0)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    lang = lang.Substring(0, pos - 1);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;await synth.SpeakTextAsync(&lt;span&gt;&amp;quot;Hello from voice of &amp;quot;&lt;/span&gt; + voices[voiceNumber].DisplayName + &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                            &lt;span&gt;&amp;quot;. I&amp;#39;m a &amp;quot;&lt;/span&gt; + voices[voiceNumber].Gender + &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;                            &lt;span&gt;&amp;quot;. I&amp;#39;m specializing in &amp;quot;&lt;/span&gt; + lang + &lt;span&gt;&amp;quot; language&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Sometimes, like in snippet above speech process could take some time. In case your application logic needs to cancel speech process, it is advised to use &lt;font face="Consolas"&gt;IAsyncOperation&lt;/font&gt; instead of new &lt;font face="Consolas"&gt;await&lt;/font&gt; keyword. The following code demonstrates this approach – user presented with message box and same text synthesized using &lt;font face="Consolas"&gt;SpeechSynthesizer&lt;/font&gt;. When user closes &lt;font face="Consolas"&gt;MessageBox&lt;/font&gt; the speech stops:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;SpeechSynthesizer synth = &lt;span&gt;new&lt;/span&gt; SpeechSynthesizer();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;string&lt;/span&gt; theMessage = &lt;span&gt;&amp;quot;Pages updated. From outside the app, press and hold the Start button and say &amp;#39;Blog Sample show me last page&amp;#39;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    var task = synth.SpeakTextAsync(theMessage);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    MessageBox.Show(theMessage);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    task.Cancel();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;catch&lt;/span&gt; (TaskCanceledException TaskEx)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;//Ignore the error - expected when cancelling the task&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;//Some other error...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now, let’s move to speech recognition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speech Recognition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Speech recognition support for applications based on defined list of voice commands and grammars. Also built-in grammar is available. Voice commands and user-defined grammars could be used to build in-app navigation, while built-in grammars could be used to build short message dictation or in-app/web search queries functionality.&lt;/p&gt;

&lt;p&gt;Voice commands file is an XML file which defines a list of commands application listens to. Before using speech recognition application must initialize voice commands from file or from code using APIs described later. Voice commands file looks like the following code snippet:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;&amp;lt;?&lt;/span&gt;&lt;span&gt;xml&lt;/span&gt; &lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span&gt;encoding&lt;/span&gt;&lt;span&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;VoiceCommands&lt;/span&gt; &lt;span&gt;xmlns&lt;/span&gt;&lt;span&gt;=&amp;quot;http://schemas.microsoft.com/voicecommands/1.0&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;CommandSet&lt;/span&gt; &lt;span&gt;xml:lang&lt;/span&gt;&lt;span&gt;=&amp;quot;en-us&amp;quot;&lt;/span&gt; &lt;span&gt;Name&lt;/span&gt;&lt;span&gt;=&amp;quot;NavigationCommands&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;CommandPrefix&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Blog Sample&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;CommandPrefix&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Show (Page Number) page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Command&lt;/span&gt; &lt;span&gt;Name&lt;/span&gt;&lt;span&gt;=&amp;quot;showPage&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Show me (some) page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;[Show] [me] {pageNames} page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Go to {pageNames} page &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Feedback&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Navigating to {pageNames} page...&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Feedback&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Navigate&lt;/span&gt; &lt;span&gt;Target&lt;/span&gt;&lt;span&gt;=&amp;quot;/ThePage.xaml&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Command&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Command&lt;/span&gt; &lt;span&gt;Name&lt;/span&gt;&lt;span&gt;=&amp;quot;showAboutPage&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Show me the About Page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Example&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;show [me] the about page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;the about page&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ListenFor&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Feedback&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Showing you the About page...&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Feedback&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Navigate&lt;/span&gt; &lt;span&gt;Target&lt;/span&gt;&lt;span&gt;=&amp;quot;About.xaml&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Command&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;PhraseList&lt;/span&gt; &lt;span&gt;Label&lt;/span&gt;&lt;span&gt;=&amp;quot;pageNames&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;First&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Second&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Third&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;PhraseList&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;CommandSet&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;!-- Other CommandSets for other languages --&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;VoiceCommands&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Few “special” elements on such file:&lt;/p&gt;

&lt;p&gt;{} - Contains the reference to a value from corresponding PhraseList&lt;/p&gt;

&lt;p&gt;[] – Designates optional word or words.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;for complete reference of available options for VoiceCommand files refer to documentation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Grammar files also defines the words and phrases that an application will recognize in speech input. Like voice commands, grammars are also using the XML formatted file defined by the Speech Recognition Grammar Specification (SRGS) Version 1.0. Also this file should be loaded before using grammars or initialized from code behind. Sample grammar file looks like:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;&amp;lt;?&lt;/span&gt;&lt;span&gt;xml&lt;/span&gt; &lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span&gt;encoding&lt;/span&gt;&lt;span&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;grammar&lt;/span&gt; &lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span&gt;xml:lang&lt;/span&gt;&lt;span&gt;=&amp;quot;en-US&amp;quot;&lt;/span&gt; &lt;span&gt;root&lt;/span&gt;&lt;span&gt;=&amp;quot;sampleCommand&amp;quot;&lt;/span&gt; &lt;span&gt;tag-format&lt;/span&gt;&lt;span&gt;=&amp;quot;semantics/1.0&amp;quot;&lt;/span&gt; &lt;span&gt;xmlns&lt;/span&gt;&lt;span&gt;=&amp;quot;http://www.w3.org/2001/06/grammar&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;         &lt;span&gt;xmlns:sapi&lt;/span&gt;&lt;span&gt;=&amp;quot;http://schemas.microsoft.com/Speech/2002/06/SRGSExtensions&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;rule&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;sampleCommand&amp;quot;&lt;/span&gt; &lt;span&gt;scope&lt;/span&gt;&lt;span&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    Navigate to&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; page &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; item &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt; &lt;span&gt;repeat&lt;/span&gt;&lt;span&gt;=&amp;quot;0-1&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; in the &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ruleref&lt;/span&gt; &lt;span&gt;uri&lt;/span&gt;&lt;span&gt;=&amp;quot;#pages&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt; &lt;span&gt;repeat&lt;/span&gt;&lt;span&gt;=&amp;quot;0-1&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; pages &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt; &lt;span&gt;repeat&lt;/span&gt;&lt;span&gt;=&amp;quot;0-1&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; items &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;rule&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;rule&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;&lt;span&gt;=&amp;quot;pages&amp;quot;&lt;/span&gt; &lt;span&gt;scope&lt;/span&gt;&lt;span&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; Interesting &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; Boring &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; New &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; Old &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;      &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; Personal &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;item&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;one-of&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;  &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;rule&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;grammar&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;For complete descriptions of SRGS grammar elements, refer to documentation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Now let’s see how to use those files from within application.&lt;/p&gt;

&lt;p&gt;To use voice recognition, the application must declare the following capabilities (in application manifest):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Capability&lt;/span&gt; &lt;span&gt;Name&lt;/span&gt;&lt;span&gt;=&amp;quot;ID_CAP_SPEECH_RECOGNITION&amp;quot;&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Capability&lt;/span&gt; &lt;span&gt;Name&lt;/span&gt;&lt;span&gt;=&amp;quot;ID_CAP_MICROPHONE&amp;quot;&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Let’s see how to initialize speech recognizer with Voice Commands file:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;// Set the path to the Voice Command Definition (VCD) file.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    String path = Windows.ApplicationModel.Package.Current.InstalledLocation.Path + &lt;span&gt;&amp;quot;\\VoiceCommands.xml&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    Uri uri = &lt;span&gt;new&lt;/span&gt; Uri(path, UriKind.Absolute);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;// Load the VCD file.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    await Windows.Phone.Speech.VoiceCommands.VoiceCommandService.InstallCommandSetsFromFileAsync(uri);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;}&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;From now on the application’s commands are available for phone-wide speech commands. This means, that user could long press windows key and say something like: “Blog Sample show second page” or “Blog Sample Go to Third page”. As result to recognized text, the page defined Navigate element of voice command file will be invoked. Also, user could ask phone “What can I say?” and receive list of available commands incl. the applications registered using voice commands:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_75D56D84.png"&gt;&lt;img width="337" height="606" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_2CCF4BBE.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As response to recognized text system provides visual and spoken response:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2B1E7FEA.png"&gt;&lt;img width="340" height="608" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_54B24B1D.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As mentioned before, the page in the app is invoked. Navigation context holds information which helps to support voice recognition scenarios. In case of voice initiated navigation the query string contains recognized voice command (“voiceCommandName”), recognition result (“reco”) and recognized text in PhraseList named element. In case of voice command file defined above, the query string contains the following values:&lt;/p&gt;

&lt;p&gt;voiceCommandName = &lt;em&gt;showPage&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;reco = Blog Sample Show Third page&lt;/p&gt;

&lt;p&gt;&lt;em&gt;pageName&lt;/em&gt; = &lt;em&gt;Third&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;, that &lt;em&gt;italic&lt;/em&gt; information provided based on VCD file.&lt;/p&gt;

&lt;p&gt;This information could be used while processing navigation arguments in &lt;font face="Consolas"&gt;OnNavigatedTo&lt;/font&gt; function as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;base&lt;/span&gt;.OnNavigatedTo(e);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;if&lt;/span&gt; (NavigationContext.QueryString.ContainsKey(&lt;span&gt;&amp;quot;voiceCommandName&amp;quot;&lt;/span&gt;))&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    {&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        &lt;span&gt;string&lt;/span&gt; voiceCommandName = NavigationContext.QueryString[&lt;span&gt;&amp;quot;voiceCommandName&amp;quot;&lt;/span&gt;];&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        &lt;span&gt;switch&lt;/span&gt; (voiceCommandName)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        {&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;            &lt;span&gt;case&lt;/span&gt; &lt;span&gt;&amp;quot;showPage&amp;quot;&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                &lt;span&gt;string&lt;/span&gt; pageNumber = NavigationContext.QueryString[&lt;span&gt;&amp;quot;pageNames&amp;quot;&lt;/span&gt;];&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                PageTitle.Text = pageNumber + &lt;span&gt;&amp;quot; page&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;                &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;            &lt;span&gt;case&lt;/span&gt; &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;            &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;            &lt;span&gt;default&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        }&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    }&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Last, but not least – modifications to voice commands once loaded. In some case application manipulates with dynamic data which should be exposed in VCD file. In such case the commands list could be dynamically updated as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    IReadOnlyDictionary&amp;lt;String, VoiceCommandSet&amp;gt; collectionOfCommandSets = VoiceCommandService.InstalledCommandSets;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    VoiceCommandSet targetCommandSet = collectionOfCommandSets[&lt;span&gt;&amp;quot;NavigationCommands&amp;quot;&lt;/span&gt;];&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    String[] updatedPagesList = { &lt;span&gt;&amp;quot;First&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Second&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Third&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Fourth&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Fifth&amp;quot;&lt;/span&gt;, &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;                                    &lt;span&gt;&amp;quot;Other&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Interesting&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Boring&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Last&amp;quot;&lt;/span&gt; };&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    await targetCommandSet.UpdatePhraseListAsync(&lt;span&gt;&amp;quot;pageNames&amp;quot;&lt;/span&gt;, updatedPagesList);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Notes&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;The “&lt;font face="Consolas"&gt;NavigationCommands&lt;/font&gt;” is the name of &lt;font face="Consolas"&gt;CommandSet&lt;/font&gt; in loaded VCD file and “&lt;font face="Consolas"&gt;pageNames&lt;/font&gt;” is the &lt;font face="Consolas"&gt;PhraseList&lt;/font&gt; label in VCD file.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now let’s see how to recognize the speech from within the application. &lt;/p&gt;

&lt;p&gt;Speech recognizers located in &lt;font face="Consolas"&gt;Windows.Phone.Speech.Recognition&lt;/font&gt; namespace. There are two of them: &lt;font face="Consolas"&gt;SpeechRecognizerUI&lt;/font&gt; and &lt;font face="Consolas"&gt;SpeechRecognizer&lt;/font&gt;. &lt;font face="Consolas"&gt;SpeechRecognizerUI&lt;/font&gt; provides built-in experience while listening to the speech and can show system confirmation after recognition. &lt;font face="Consolas"&gt;SpeechRecognizer&lt;/font&gt; enables user-defined speech scenarios as it doesn’t show any UI. Before first usage of speech recognizer it must be initialized. Also custom grammar/voice commands should be loaded, otherwise built-in system grammar will be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;Built-in dictation and web search grammars are large files and they are reside online (not on the phone). The performance may not be as fast as with custom, on-phone grammars.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While initializing speech recognizer application can provide various options, like text to be shown on system UI (in case of &lt;font face="Consolas"&gt;SpeechRecognizerUI&lt;/font&gt;), showing recognition confirmations (voice and textual), etc. &lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;SpeechRecognizerUI recognizer;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;bool&lt;/span&gt; speechInitialized = &lt;span&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;List&amp;lt;&lt;span&gt;string&lt;/span&gt;&amp;gt; pagesList = &lt;span&gt;new&lt;/span&gt; List&amp;lt;&lt;span&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;private&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; InitializePagesList()&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    pagesList.Add(&lt;span&gt;&amp;quot;First&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    pagesList.Add(&lt;span&gt;&amp;quot;Second&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    pagesList.Add(&lt;span&gt;&amp;quot;Third&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    pagesList.Add(&lt;span&gt;&amp;quot;Fourth&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    pagesList.Add(&lt;span&gt;&amp;quot;Fifth&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&lt;span&gt;private&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; InitializeSpeechRecognition()&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    &lt;span&gt;if&lt;/span&gt; (&lt;span&gt;this&lt;/span&gt;.speechInitialized)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        &lt;span&gt;return&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    {&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        speechInitialized = &lt;span&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        recognizer = &lt;span&gt;new&lt;/span&gt; SpeechRecognizerUI();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        recognizer.Settings.ListenText = &lt;span&gt;&amp;quot;Navigate to which page?&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        recognizer.Settings.ExampleText = &lt;span&gt;&amp;quot;For example, &amp;#39;First&amp;#39; or &amp;#39;Second&amp;#39;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        recognizer.Settings.ShowConfirmation = &lt;span&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        recognizer.Recognizer.Grammars.AddGrammarFromList(&lt;span&gt;&amp;quot;pages&amp;quot;&lt;/span&gt;, pagesList);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    }&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    &lt;span&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    {&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        &lt;span&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    }&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Alternatively, application could initialize speech recognition from SRGS file (instead of using &lt;font face="Consolas"&gt;AddGrammarFromList&lt;/font&gt;):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;string&lt;/span&gt; path = Package.Current.InstalledLocation.Path + &lt;span&gt;&amp;quot;\\CostomSRGSGrammars.xml&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;Uri customGrammar = &lt;span&gt;new&lt;/span&gt; Uri(path, UriKind.Absolute);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;recoWithUI.Recognizer.Grammars.AddGrammarFromUri(&lt;span&gt;&amp;quot;appCommands&amp;quot;&lt;/span&gt;, customGrammar);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;await recoWithUI.Recognizer.PreloadGrammarsAsync();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once speech recognizer initialized and configured it could be started as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;var recoResult = await recognizer.RecognizeWithUIAsync();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The recognition result provides &lt;font face="Consolas"&gt;ResultStatus&lt;/font&gt; and &lt;font face="Consolas"&gt;RecognitionResult&lt;/font&gt; which among other information holds recognized &lt;font face="Consolas"&gt;Text&lt;/font&gt; and &lt;font face="Consolas"&gt;TextConfidence&lt;/font&gt; and &lt;font face="Consolas"&gt;RuleName&lt;/font&gt;. Those parameters could be used in application logic. Next code snippet uses &lt;font face="Consolas"&gt;Text&lt;/font&gt; and &lt;font face="Consolas"&gt;TextConfidence&lt;/font&gt; for navigation purposes:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;var url = &lt;span&gt;string&lt;/span&gt;.Format(&lt;span&gt;&amp;quot;/ThePage.xaml?recognizedPage={0}&amp;amp;confidence={1}&amp;quot;&lt;/span&gt;, &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                        recoResult.RecognitionResult.Text, &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;                        recoResult.RecognitionResult.TextConfidence);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;NavigationService.Navigate(&lt;span&gt;new&lt;/span&gt; Uri(url, UriKind.Relative));&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It it important to mention, that application can use more than one speech recognizer object and each once could be initialized with its own grammars.&lt;/p&gt;

&lt;p&gt;That is all about voice recognition and speech synthesizing in Windows Phone 8.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Next time I will show how to associate application with file extension and handle custom protocol.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Stay tuned,&lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1400683" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Voice/default.aspx">Voice</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Voice+Recognition/default.aspx">Voice Recognition</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Speech/default.aspx">Speech</category></item><item><title>What’s New in Windows Phone 8 (2 out of 8)–Lock Screen</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/31/what-s-new-in-windows-phone-8-2-out-of-8-lock-screen.aspx</link><pubDate>Wed, 31 Oct 2012 18:17:43 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1397618</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1397618</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1397618</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/31/what-s-new-in-windows-phone-8-2-out-of-8-lock-screen.aspx#comments</comments><description>&lt;p&gt;In previous post I described how to enrich user experience by customizing application tiles. In this post I will show how to enable your application to present some information on phone’s lock screen.&lt;/p&gt;  &lt;p&gt;In Windows Phone 8 applications could provide 3 pieces of info on lock screen: application’s icon, count and text. On screenshot below my sample application provides icon, count and some text:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_7ABFB76B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_576F706E.png" width="337" height="606" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If application selected by user, the lock screen could show app icon defined in app manifest, count and text pulled directly from the application&amp;#39;s primary tile. The secondary tiles does not have an impact on lock screen. &lt;/p&gt;  &lt;p&gt;Let’s see how to achieve it. First of all – icon presented on lock screen must be 24x24 transparent PNG image with white pixels (plus transparent pixels obviously). Once such image created, add it to the application and then open application manifest using XML editor as follows (right click on manifest file and select “Open With…”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_3A358E98.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6E3A081E.png" width="389" height="111" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then select XML (Text) Editor:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_0538638E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6559DA05.png" width="662" height="501" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Locate “&lt;font face="Consolas"&gt;DeviceLockImageURI&lt;/font&gt;” element (within PrimaryToken/Template definition) and specify path to the image:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DeviceLockImageURI&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;IsRelative&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;IsResource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Images\lock_icon.png&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DeviceLockImageURI&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;To enable application icon and count add new &lt;font face="Consolas"&gt;Extensions&lt;/font&gt; element and new &lt;font face="Consolas"&gt;Extension&lt;/font&gt; as follows:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Extensions&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Extension&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ExtensionName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LockScreen_Notification_IconCount&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ConsumerID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{111DFF24-AA15-4A96-8006-2BFF8122084F}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TaskID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Extensions&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;:&lt;em&gt;Extension element must be next to Tokens element.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you plan to provide lock screen with text updates, add the following &lt;font face="Consolas"&gt;Extension&lt;/font&gt; element to the &lt;font face="Consolas"&gt;Extensions&lt;/font&gt; section:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Extension&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ExtensionName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LockScreen_Notification_TextField&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ConsumerID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{111DFF24-AA15-4A96-8006-2BFF8122084F}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TaskID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/em&gt;:&lt;em&gt;Your application could use multiple extension elements, but consider providing only those, which are really used by the application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Also note&lt;/strong&gt;&lt;/em&gt;:&lt;strong&gt; &lt;/strong&gt;&lt;em&gt;As the text pulled directly from the application&amp;#39;s primary tile, cyclic tile template shouldn’t be used with &lt;font face="Consolas"&gt;LockScreen_Notification_TextField&lt;/font&gt; extension as it has no text.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once application with extensions in manifest deployed to device, user can select the application in Settings/Lock Screen section – application name will be available for selection at notifications sections (detailed and quick status):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_4B1970E1.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_2808FF71.png" width="339" height="606" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;the settings should be done by user from Settings menu and cannot be defined form code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lock screen Background&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In addition to information presented above, Windows Phone 8 application could be then chosen lock screen background provider application, so that application can provide the lock screen background.&lt;/p&gt;

&lt;p&gt;To enable this functionality your application must declare additional Extension in application manifest (could be used with or without other lock screen extensions):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Extension&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ExtensionName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LockScreen_Background&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ConsumerID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{111DFF24-AA15-4A96-8006-2BFF8122084F}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TaskID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_default&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once defined (after deployment) user will be able to choose your application form list of the applications with same functionality on the device:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2C9F0A2B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_4AF92547.png" width="339" height="606" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_36935FBC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_36BFBD24.png" width="341" height="607" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_0885C16A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_69EBD0C0.png" width="339" height="606" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition to this manual method the default lock screen provide could also be changed from code. Let’s see how to request provide lock screen background from code:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#008000;"&gt;//Check if application already lock screen background provider&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!LockScreenManager.IsProvidedByCurrentApplication)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#008000;"&gt;//No, request to be active lockscreen wallpaper provider&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    var res = await LockScreenManager.RequestAccessAsync();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (res == LockScreenRequestResult.Granted)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#008000;"&gt;//Request approved&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#008000;"&gt;//Request rejected&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code snippet checks if lock screen already provided by current application, and if not raises request. This request is raised to user as following message box (system provided):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_5CA547AD.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_3A6D3C27.png" width="339" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;User approval equivalent to Settings change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;user can change this at any time using Settings screen, thus before setting actual background the app should change it it is still current provider.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s see how to set lock screen background:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (LockScreenManager.IsProvidedByCurrentApplication)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; fileName = &lt;span style="color:#006080;"&gt;&amp;quot;ms-appx:///Images/WP1.JPG&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    Uri uri = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(fileName, UriKind.RelativeOrAbsolute);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    LockScreen.SetImageUri(uri);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#008000;"&gt;//Lock screen background set&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;//...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code snippet verifies that application is still active lock screen background provider and invokes &lt;font face="Consolas"&gt;LockScreen.SetImageUri&lt;/font&gt; function which changes the background.&lt;/p&gt;

&lt;p&gt;In addition, the &lt;font face="Consolas"&gt;LockScreen&lt;/font&gt; class provides access to current background image URI by &lt;font face="Consolas"&gt;LockScreen.GetImageUri&lt;/font&gt; function. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simulation Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;New version of Windows Phone Emulator and SDK provides new tool called Simulation Dashboard which enables simulation of various network conditions, lock screen and reminders. This tool located in Tools menu in Visual Studio:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_67527935.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_39187D7B.png" width="460" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_16E071F5.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_01DEC9B5.png" width="446" height="838" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use radio buttons in Lock Screen section to simulate locking the screen on emulator.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_4BAD2B98.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6F85DD25.png" width="339" height="607" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;That’s it for now. Next time I will show how to integrate voice recognition into your application.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Stay tuned,&lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1397618" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Lock+Screen/default.aspx">Lock Screen</category></item><item><title>What’s New in Windows Phone 8 (1 out of 8)–Tiles</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/30/what-s-new-in-windows-phone-8-1-out-of-10-tiles.aspx</link><pubDate>Tue, 30 Oct 2012 18:33:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1394756</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1394756</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1394756</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/30/what-s-new-in-windows-phone-8-1-out-of-10-tiles.aspx#comments</comments><description>&lt;p&gt;One of the most noticeable feature of Windows Phone 8 is change of main screen with 3 different tile types:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2708E78A.png"&gt;&lt;img width="337" height="605" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_7A1384AE.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Each tile could be one out from 3 types available sizes – small, normal and wide. Also, each type could be form 3 different types – Iconic, Flip and Cycle.&lt;/p&gt;  &lt;p&gt;All 3 sizes and all 3 types are available for 3rd party developers. Let’s see how to use this interesting feature in the application.&lt;/p&gt;  &lt;p&gt;So what are the sizes? The sizes are:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_51286FA5.png"&gt;&lt;img width="140" height="74" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_706B1678.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Medium&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_5696E049.png"&gt;&lt;img width="275" height="138" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_1C3B6A68.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wide&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_0C4C25A4.png"&gt;&lt;img width="273" height="407" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_719F898A.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What about 3 types? The types are:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Flip&lt;/strong&gt; – this tile flips from front to back exposing front and back content&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_6FEEBDB6.png"&gt;&lt;img width="270" height="136" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_41290514.png" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_79677C2C.png"&gt;&lt;img width="270" height="135" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_26103606.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Iconic&lt;/strong&gt; – this tile mimics Metro design&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2BEAD99F.png"&gt;&lt;img width="270" height="132" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_7605E484.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cycle&lt;/strong&gt; – this tile cycles through collection of local images (up to nine images could be defined)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_02FFC496.png"&gt;&lt;img width="269" height="139" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_48381BBF.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_38B509F0.png"&gt;&lt;img width="271" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_3E8FAD89.png" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;It is important to mention, that all “interesting” tile functionality such as cycling images and flipping available only for medium and wide tiles. In case of Flip/Cycle tiles, small tile shows static image as defined in application manifest (see below).&lt;/p&gt;  &lt;p&gt;To switch between different tile sizes tap and hold on the tile. In addition to “unpin” icon from previous version new version shows additional icon which enables size change:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_167CFE6A.png"&gt;&lt;img width="287" height="172" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_2376DE7B.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_29518214.png"&gt;&lt;img width="162" height="170" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_736C8CF9.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_52791A52.png"&gt;&lt;img width="104" height="102" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_71BBC125.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Working with the tiles&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Main tile type (template) is defined via application manifest:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_57E78AF6.png"&gt;&lt;img width="884" height="329" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6B94748A.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also manifest is used to enable support for wide tile (“Support for large Tiles” checkbox) and define initial tile graphics. It is important to define main tile type which suites best your application’s needs as it cannot be changed later. &lt;/p&gt;  &lt;p&gt;For best results it is important to provide tile graphics according to expected sizes, though wrongly sized graphics will be presented anyway with possible visual distortions. The sizes are:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;Tile Size&lt;/td&gt;        &lt;td valign="top"&gt;Flip Tile&lt;/td&gt;        &lt;td valign="top"&gt;Cycle Tile&lt;/td&gt;        &lt;td valign="top"&gt;Iconic Tile&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Small&lt;/td&gt;        &lt;td valign="top"&gt;159x159&lt;/td&gt;        &lt;td valign="top"&gt;159x159&lt;/td&gt;        &lt;td valign="top"&gt;110x110&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Medium&lt;/td&gt;        &lt;td valign="top"&gt;336x336&lt;/td&gt;        &lt;td valign="top"&gt;33x336&lt;/td&gt;        &lt;td valign="top"&gt;202x202&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Wide&lt;/td&gt;        &lt;td valign="top"&gt;691x336&lt;/td&gt;        &lt;td valign="top"&gt;691x336&lt;/td&gt;        &lt;td valign="top"&gt;N/A&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;The content of main tile could be changed from code, though, as mentioned before, the tile template couldn’t be changed. The following code snippet changes the content of main app tile:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;height:256px;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;   &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;     &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;var mainTile = ShellTile.ActiveTiles.FirstOrDefault();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;if&lt;/span&gt; (mainTile != &lt;span&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    IconicTileData tileData = &lt;span&gt;new&lt;/span&gt; IconicTileData()&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    {&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        Count = 73,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        BackgroundColor = Colors.Green,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        Title = &lt;span&gt;&amp;quot;Main&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        IconImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/IconicTileMediumLarge.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        SmallIconImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/IconicTileSmall.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        WideContent1 = &lt;span&gt;&amp;quot;Wide content 1&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;        WideContent2 = &lt;span&gt;&amp;quot;Wide content 2&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;        WideContent3 = &lt;span&gt;&amp;quot;Wide content 3&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    };&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    mainTile.Update(tileData);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code snippet updates main tile using IconicTileData class (as application tile defined in app manifest as Iconic tile – see image above). This snippet uses all possible properties, many of them are optional (such as wide contents for example). The code snippet updates main tile which looks like the following:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;Original tile&lt;/td&gt;

      &lt;td valign="top"&gt;Update tile&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_35434C7B.png"&gt;&lt;img width="71" height="70" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_3B8A2309.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_13E3A6DF.png"&gt;&lt;img width="67" height="67" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_20DD86F0.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_27245D7E.png"&gt;&lt;img width="138" height="139" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_77F271E6.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_771A0BFC.png"&gt;&lt;img width="137" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_2F588315.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_63207966.png"&gt;&lt;img width="269" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6248137C.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_3A35645D.png"&gt;&lt;img width="268" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_04506F43.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;* Numbers on small and medium tiles cut due to bug in early build of SDK used while writing this post&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The templates used for main tile could be used to create and update also secondary tiles for application. &lt;/p&gt;

&lt;p&gt;Let’s see how to create secondary tile using Flip template:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;//Flip&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;FlipTileData tileData = &lt;span&gt;new&lt;/span&gt; FlipTileData()&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    Title = &lt;span&gt;&amp;quot;Flip&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    Count = 12,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    BackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileMedium.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    BackBackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileMedium.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;                &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    BackTitle = &lt;span&gt;&amp;quot;Flip back&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    BackContent = &lt;span&gt;&amp;quot;Back content&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;                &lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    SmallBackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileSmall.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    WideBackContent = &lt;span&gt;&amp;quot;Wide back content&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    WideBackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileLarge.png&amp;quot;&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    WideBackBackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileLarge.png&amp;quot;&lt;/span&gt;, UriKind.Relative)&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;};&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;ShellTile.Create(&lt;span&gt;new&lt;/span&gt; Uri(uri, UriKind.Relative), tileData, &lt;span&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code snippet is pretty self-descripting: it creates &lt;font face="Consolas"&gt;FlipTileData&lt;/font&gt; object, populates properties for front and back of the tile for normal and wide content (in case we want to support wide tile) and invokes &lt;font face="Consolas"&gt;ShellTile.Create&lt;/font&gt; function. Last parameter (in this case &lt;font face="Consolas"&gt;true&lt;/font&gt;) defines the support for wide tile. The result produced for this tile looks as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_784E7F0E.png"&gt;&lt;img width="270" height="136" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_296DB9AF.png" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_6F7E76C2.png"&gt;&lt;img width="270" height="135" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_40B8BE20.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_7B9FF0E9.png"&gt;&lt;img width="138" height="138" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_6CF54504.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_1A0A31D3.png"&gt;&lt;img width="137" height="136" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_23EF233E.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_2316BD54.png"&gt;&lt;img width="73" height="71" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_7B704129.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let us see the code to create third &lt;/p&gt;

&lt;p&gt;(and most interesting in my opinion) tile type – cycle.&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="margin:20px 0px 10px;padding:4px;border:1px solid silver;width:97.5%;text-align:left;line-height:12pt;overflow:auto;font-size:8pt;cursor:text;direction:ltr;max-height:200px;"&gt;
  &lt;div id="codeSnippet" style="padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;
    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;&lt;span&gt;//Cycle&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;List&amp;lt;Uri&amp;gt; list = &lt;span&gt;new&lt;/span&gt; List&amp;lt;Uri&amp;gt;();&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;list.Add(&lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Images/WP1.jpg&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;list.Add(&lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Images/WP2.jpg&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;list.Add(&lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Images/WP3.jpg&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;list.Add(&lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Images/WP4.jpg&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;list.Add(&lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Images/WP5.jpg&amp;quot;&lt;/span&gt;, UriKind.Relative));&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;CycleTileData tileData = &lt;span&gt;new&lt;/span&gt; CycleTileData()&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;{&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    Title = &lt;span&gt;&amp;quot;Cycle&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    Count = 12,&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;    SmallBackgroundImage = &lt;span&gt;new&lt;/span&gt; Uri(&lt;span&gt;&amp;quot;/Assets/Tiles/FlipCycleTileSmall.png&amp;quot;&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;    CycleImages = list&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;};&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;background-color:white;"&gt;ShellTile.Create(&lt;span&gt;new&lt;/span&gt; Uri(uri, UriKind.RelativeOrAbsolute), tileData, &lt;span&gt;true&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="margin:0em;padding:0px;width:100%;text-align:left;color:black;line-height:12pt;overflow:visible;font-size:8pt;direction:ltr;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Most important in this this code block is the &lt;font face="Consolas"&gt;CycleImages&lt;/font&gt; list for &lt;font face="Consolas"&gt;CycleTileData&lt;/font&gt; object. It expects &lt;font face="Consolas"&gt;IEnumerabe&amp;lt;Uri&amp;gt;&lt;/font&gt; object with &lt;strong&gt;local&lt;/strong&gt; images path. Remote images (not on the device) are not supported. The result of this code produces tile which looks like the following illustrations:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_68BB4772.png"&gt;&lt;img width="272" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_552DE7D1.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_6C78EC42.png"&gt;&lt;img width="139" height="137" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_4B1946A6.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_1534518C.png"&gt;&lt;img width="73" height="71" title="image" style="border-width:0px;margin:5px 5px 5px 0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_1B7B281A.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tiles also could be updated using same push notification mechanism as in previous version. The only change would be in payload sent as new tiles needs more information.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;That’s it for now. In next post I will how another end-user oriented feature – Lock Screen backgrounds and notifications.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Stay tuned, &lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1394756" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Live+Tile/default.aspx">Live Tile</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Tiles/default.aspx">Tiles</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Live/default.aspx">Live</category></item><item><title>Windows Phone 8 SDK available</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/30/windows-phone-8-sdk-available.aspx</link><pubDate>Tue, 30 Oct 2012 17:43:23 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1394649</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1394649</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1394649</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/30/windows-phone-8-sdk-available.aspx#comments</comments><description>&lt;p&gt;Just announced at BUILD keynotes – Windows Phone 8 SDK available now! It includes Visual Studio Express 2012 edition for Windows Phone (which also works as add-on for paid versions of Visual Studio 2012), new Hyper-V based Windows Phone emulator and Expression Blend. It could be downloaded from the following location:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=261873"&gt;http://go.microsoft.com/fwlink/?LinkID=261873&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned for more exciting news to come,&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1394649" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Blend/default.aspx">Blend</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/BUILD/default.aspx">BUILD</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Blend+5/default.aspx">Blend 5</category></item><item><title>Working with NFC–Take 2</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/24/working-with-nfc-take-2.aspx</link><pubDate>Wed, 24 Oct 2012 16:59:19 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1378586</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1378586</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1378586</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/10/24/working-with-nfc-take-2.aspx#comments</comments><description>&lt;p&gt;Some time ago (I’ve blogged about working with proximity devices – NFC – in Windows 8 Consumer preview: &lt;a title="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/02/29/windows-8-consumer-preview-and-visual-studio-11-beta-working-with-proximity-device-part-2-11.aspx" href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/02/29/windows-8-consumer-preview-and-visual-studio-11-beta-working-with-proximity-device-part-2-11.aspx"&gt;http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/02/29/windows-8-consumer-preview-and-visual-studio-11-beta-working-with-proximity-device-part-2-11.aspx&lt;/a&gt;). Then I’ve talked about a simple way performing NFC communication – using pub/sub communication pattern which is good for exchanging simple messages using PublishMessage and PublishBinaryMessage functions on ProximityDevice class.&lt;/p&gt;  &lt;p&gt;Few days ago my client asked me to prepare a demo which uses proximity communication to transfer custom “Items” between two instances of the app (and also Windows Phone 8 version of this app). The app uses complex “items” which includes many textual fields, undefined number of attached images, locations, etc. To achieve this I’ve decided to use 2nd approach to proximity communication briefly described in my previous blog post – the TriggeredConnection and Sockets. &lt;/p&gt;  &lt;p&gt;(I had additional “constraints” while engineered the solution: to minimize amount of changes in the app by using existing in-the-app load/save mechanisms and to be compatible as much as possible with Windows Phone 8 app and provide maximum code reuse between the platforms to avoid developing same functionality twice. Please keep in mind, that this blog post is not focused directly on dealing those constraints; I will blog more about sharing the code and my traditional “What’s New” series about Windows Phone 8 in a short while – so stay tuned).&lt;/p&gt;  &lt;p&gt;Let’s get started. First of all – the app must specify proximity capability in app manifest:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_14406C2A.png" width="375" height="602" /&gt;&lt;/p&gt;  &lt;p&gt;The app has to support two sides of proximity communication – sender and receiver. Both called peers. In both cases, I am using PeerFinder class (form Windows.Networking.Proximity namespace). In my case I’ve decided to use Triggered discovery type which supports Tap-to-Connect scenario I needed for my purposes.&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; StartConnect(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; displayName)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!String.IsNullOrEmpty(displayName))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//Optionally name the peer so it could be easily identified &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//and optionally presented to user&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         PeerFinder.DisplayName = displayName;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; ((PeerFinder.SupportedDiscoveryTypes &amp;amp; PeerDiscoveryTypes.Triggered) != PeerDiscoveryTypes.Triggered)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//The device doesn&amp;#39;t support tap-and-send communication&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         UpdateConnectionStatus(ConnectionStatus.NotSupported);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Subscribe to connection triggers&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;     PeerFinder.TriggeredConnectionStateChanged += TriggeredConnectionStateChanged;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Declare alternate identities (if needed and supported)&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!PeerFinder.AlternateIdentities.ContainsKey(AlternateIdentityKey))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         PeerFinder.AlternateIdentities.Add(AlternateIdentityKey, AlternateIdentity);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     PeerFinder.AllowInfrastructure = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     PeerFinder.AllowBluetooth = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     PeerFinder.AllowWiFiDirect = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Start listening to proximity events&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;     PeerFinder.Start();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;     UpdateConnectionStatus(ConnectionStatus.Ready);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code snippet above starts the connectivity. It uses enables to optionally name the peer so it could be identified by other side, checks that device support required proximity discovery mode and subscribes to connection state changes.&lt;/p&gt;

&lt;p&gt;The code above adds AlternateIdentities (see class declaration below). Alternate identities are used to enable communication between different applications and devices. As you remember, my demo requirement was to share the “items” between two instances of the app (which has same identity on all running devices) and Windows Phone 8 version of this app. Enabling the sharing between the app running Windows 8 and the app running on Windows Phone or &lt;strong&gt;different&lt;/strong&gt; app running on Windows 8 requires adding alternate identities. The actual definition of the AlternateIdentityKey in my demo looks as follows:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; NETFX_CORE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AlternateIdentityKey = &lt;span style="color:#006080;"&gt;&amp;quot;WindowsPhone&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AlternateIdentity = &lt;span style="color:#006080;"&gt;&amp;quot;{04f1e621-039f-4829-b59f-47e71c6af98d}&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#elif&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AlternateIdentityKey = &lt;span style="color:#006080;"&gt;&amp;quot;Windows&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AlternateIdentity = &lt;span style="color:#006080;"&gt;&amp;quot;a4ec8cdf-7759-4709-93af-5d2c2688ee46_cb1hhkscw5m06!App&amp;quot;&lt;/span&gt;; &lt;span style="color:#008000;"&gt;//Could be found using Windows.ApplicationModel.Package.Current.Id.FamilyName&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code is a part of shared code which defines AlternateIdentity for other platform and could also define the AlternateIdentity for other app running on the same platform. When compiled for Windows 8, it adds “WindowsPhone” identity key and the ID of application running on the phone; when compiled for Windows Phone 8 it adds the “Windows” identity key and the full app ID of the Windows 8 app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;The app id could be obtained from app manifest (Packaging tab). 
    &lt;br /&gt;For Windows it will be the value of “Package family name” field + “!” + app ID (the namesapce and name of the App class). It also could be obtained using Windows.ApplicationModel.Package.Current.Id.FamilyName API from within the code. 

    &lt;br /&gt;For Windows Phone app it will be the value of “Product ID”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This way PeerFinder is aware about other apps which are allowed to connect to this app. Additionally, when two devices are in proximity and the trying to establish the proximity connection, but one of the devices is not running the application (not started or in background) this alternate ID will be using by platform to identify the “target” app and pop up a toast notification asking user’s permission to start the app and establish proximity connection.&lt;/p&gt;

&lt;p&gt;When the connection is triggered, every app responds in slightly different way (depending of the app logic). In my case the TriggeredConnectionStateChanged event handler looks as follows:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; TriggeredConnectionStateChanged(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, TriggeredConnectionStateChangedEventArgs e)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;switch&lt;/span&gt; (e.State)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.PeerFound:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.PeerFound);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.Connecting:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.Connecting);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.Listening:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.Listening);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.Canceled:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.Canceled);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.Failed:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.Failed);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; TriggeredConnectState.Completed:&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;             socket = e.Socket;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;             UpdateConnectionStatus(ConnectionStatus.Completed);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;For most cases my demo just informs the user with different connectivity state changes and when connection established (Completed state) saves a Socket for future use. The main app also listens to connectivity changes and when connection is established switches to either “receive” mode or “send” mode depending on the app logic. In both cases (will show then later in the post) a socket communication will be used to send/receive raw bytes and the actual information should be first converted to bytes representation (in case of send side) and parsed back (in case of receiving side).&lt;/p&gt;

&lt;p&gt;To leverage the code we already had in the app I’ve decided to use objects serialized with JSON serializer. This also enabled me to write pretty “abstract” code which sending/receiving the items (you will see later). The next code block has two functions – GetItemStream which serializes my “item” to JSON format and ParseNewItem which deserializes received “item” from stream back to strongly typed object:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] GetItemStream(Item note)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     List&amp;lt;Type&amp;gt; types = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Type&amp;gt;();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Not required in this case, but should be used to &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//serializing/deserializing multiple object types&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     types.Add(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Item)); &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     DataContractJsonSerializer ser = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataContractJsonSerializer(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Item)&lt;span style="color:#008000;"&gt;/*, types*/&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     MemoryStream ms = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MemoryStream();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     ser.WriteObject(ms, note);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] json = ms.ToArray();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;     var &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; = System.Text.Encoding.UTF8.GetString(json, 0, json.Length);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     Debug.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Serialized JSON object:\n&amp;quot;&lt;/span&gt; + &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; json;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Item ParseNewItem(MemoryStream ms)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     List&amp;lt;Type&amp;gt; types = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Type&amp;gt;();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Not required in this case, but should be used to &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//serializing/deserializing multiple object types&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;     types.Add(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Item)); &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     DataContractJsonSerializer des = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataContractJsonSerializer(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Item)&lt;span style="color:#008000;"&gt;/*, types*/&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;     var item = (Item)des.ReadObject(ms);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     item.UniqueId = DataManager.GetUniqueId();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; item;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once the object has been serialized and we got a stream it is ready to be sent.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; async Task SendItemAsync([ReadOnlyArray] &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] itemBytes, &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; imagesCount, [ReadOnlyArray] List&amp;lt;&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[]&amp;gt; images)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (itemBytes != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; socket != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//Start sending the item&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;             DataWriter dw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataWriter(socket.OutputStream);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Sending item length&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;             dw.WriteInt32(itemBytes.Length);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;             await dw.StoreAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Sending item bytes&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;             dw.WriteBytes(itemBytes);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;             await dw.StoreAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; != images &amp;amp;&amp;amp; imagesCount &amp;gt; 0) &lt;span style="color:#008000;"&gt;//The only app-specific part here...&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;             {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var imageBytes &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; images)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                 {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;//Sending image length&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;                     dw.WriteInt32(imageBytes.Length);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;                     await dw.StoreAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;//Sending image bytes&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;                     dw.WriteBytes(imageBytes);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;                     await dw.StoreAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;                 }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;             }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Flushing buffers to make sure we pushed all the data over &amp;quot;the wire&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;             await dw.FlushAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Closing DataWriter&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;             dw.DetachStream();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;             dw.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;             Debug.WriteLine(ex.Message);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Reset the connection if case of communication error&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt;             StopConnect();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; NETFX_CORE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;Win8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#elif&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;WP8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Restart connection&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum50"&gt;  50:&lt;/span&gt;             StartConnect(PeerName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum51"&gt;  51:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum52"&gt;  52:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum53"&gt;  53:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The function is relatively simple and straight forward – user DataWriter class (System.Networking.Sockets namespace) to send bytes over socketed connection. Same goes to images which were prepared in their raw/bytes format. The code snippet which prepares and calls the SendItemAsync looks as follows (and is not shared across platforms):&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Get bytes from current item&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] bytes = ProximityManager.Instance.GetItemStream(item);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[]&amp;gt; images = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//If item has images attached - prepare images&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (item.Images.Count &amp;gt; 0)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     images = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[]&amp;gt;();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var imgSrc &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; item.Images)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//Read image from local storage&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         var filename = imgSrc.Replace(&lt;span style="color:#006080;"&gt;&amp;quot;Images/&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         var storage = Windows.Storage.ApplicationData.Current.LocalFolder;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;         var folder = await storage.GetFolderAsync(&lt;span style="color:#006080;"&gt;&amp;quot;Images&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;         var file = await folder.GetFileAsync(filename);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;         var stream = await file.OpenReadAsync();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;//Prepare image bytes&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] imageBytes = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[stream.Size];&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;         var str = stream.AsStream();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         await str.ReadAsync(imageBytes, 0, (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;)stream.Size);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         images.Add(imageBytes);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Send the item&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt; await ProximityManager.Instance.SendItemAsync(bytes, item.Images.Count, images);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The second part of the equation is to receive a message. Since we know exactly how we sending the message, the receive function looks as follows:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; async &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ReceiveItemAsync()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (socket != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;             DataReader dr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataReader(socket.InputStream);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Receive the size of the byte array first&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (await TryLoadAsync(dr, 4))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;             {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;                 var count = dr.ReadInt32();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt; ucount = (&lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt;)count;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (await TryLoadAsync(dr, ucount))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;                 {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] bytesIn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[count];&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;                     dr.ReadBytes(bytesIn);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;//Save/parse new item&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;                     MemoryStream ms = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MemoryStream(bytesIn);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;                     Item theItem = ParseNewItem(ms);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;                     var imagesCount = theItem.Images.Count;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;//Receive &amp;quot;attached&amp;quot; images - app-specific functionality&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (imagesCount &amp;gt; 0)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;                     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; imagesCount; i++)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;                         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;                             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (await TryLoadAsync(dr, 4))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;                             {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;                                 var imgSize = dr.ReadInt32();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;                                 &lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt; uimgSize = (&lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt;)imgSize;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;                                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (await TryLoadAsync(dr, uimgSize))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;                                 {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;                                     &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] imgBytesIn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[imgSize];&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;                                     dr.ReadBytes(imgBytesIn);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;                                     MemoryStream imgMs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MemoryStream(imgBytesIn);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;                                     var imgName = theItem.Images[i];&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt;                                     imgName = imgName.Replace(&lt;span style="color:#006080;"&gt;&amp;quot;Images/&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt;                                     var fileName = await DataManager.SaveImageAsync(imgName, imgMs.AsInputStream(), Windows.Storage.CreationCollisionOption.GenerateUniqueName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt;                                 }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt;                             }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;                         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt;                     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum50"&gt;  50:&lt;/span&gt;                     await DataManager.AddFileAsync(theItem);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum51"&gt;  51:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum52"&gt;  52:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;//Raise evens, so main app &amp;quot;knows&amp;quot; about new item&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum53"&gt;  53:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; NETFX_CORE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum54"&gt;  54:&lt;/span&gt;                     await ((NFCSample.App)App.Current).Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum55"&gt;  55:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#elif&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum56"&gt;  56:&lt;/span&gt;                     ((WP8_NFC.App)System.Windows.Application.Current).Dispatcher.BeginInvoke((Action)(() =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum57"&gt;  57:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum58"&gt;  58:&lt;/span&gt;                     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum59"&gt;  59:&lt;/span&gt;                         &lt;span style="color:#008000;"&gt;//Raise ItemReceived event&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum60"&gt;  60:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (ItemReceived != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum61"&gt;  61:&lt;/span&gt;                         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum62"&gt;  62:&lt;/span&gt;                             ItemReceivedEventArgs args = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ItemReceivedEventArgs();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum63"&gt;  63:&lt;/span&gt;                             args.NewItem = theItem;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum64"&gt;  64:&lt;/span&gt;                             ItemReceived(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;, args);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum65"&gt;  65:&lt;/span&gt;                         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum66"&gt;  66:&lt;/span&gt;                     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum67"&gt;  67:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum68"&gt;  68:&lt;/span&gt;                     )&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum69"&gt;  69:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum70"&gt;  70:&lt;/span&gt;                     );&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum71"&gt;  71:&lt;/span&gt;                 }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum72"&gt;  72:&lt;/span&gt;             }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum73"&gt;  73:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum74"&gt;  74:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Detach a stream and release it&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum75"&gt;  75:&lt;/span&gt;             dr.DetachStream();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum76"&gt;  76:&lt;/span&gt;             dr.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum77"&gt;  77:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum78"&gt;  78:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum79"&gt;  79:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum80"&gt;  80:&lt;/span&gt;             Debug.WriteLine(ex.Message);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum81"&gt;  81:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Reset the connection in case of communication error&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum82"&gt;  82:&lt;/span&gt;             StopConnect();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum83"&gt;  83:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; NETFX_CORE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum84"&gt;  84:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;Win8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum85"&gt;  85:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#elif&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum86"&gt;  86:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;WP8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum87"&gt;  87:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum88"&gt;  88:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Restart connection&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum89"&gt;  89:&lt;/span&gt;             StartConnect(PeerName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum90"&gt;  90:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum91"&gt;  91:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum92"&gt;  92:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this code I am receiving the message parts in exactly the same order as sending them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;that this code is share between Windows 8 and Windows Phone 8&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Last piece of puzzle here – the helper function which reads known amount of bytes from socket:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; async Task&amp;lt;&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt;&amp;gt; TryLoadAsync(DataReader dr, &lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt; count)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;//Get cancellation token &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     cts = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; CancellationTokenSource();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     CancellationToken token = cts.Token;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; result = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         var countReceived = await dr.LoadAsync(count).AsTask(token);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (countReceived != count)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Connection error - close it&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Bytes read {0} != {1} total bytes. Communucation error!&amp;quot;&lt;/span&gt;, countReceived, count);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;//Reset connection&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;             StopConnect();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#if&lt;/span&gt; NETFX_CORE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;Win8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#elif&lt;/span&gt; WINDOWS_PHONE&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; PeerName = &lt;span style="color:#006080;"&gt;&amp;quot;WP8_NFC Sample&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt; &lt;span style="color:#cc6633;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Restart connection&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;             StartConnect(PeerName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;             result = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;             result = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (TaskCanceledException)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;         result = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;finally&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;         cts = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; result;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is it. Now my class is shared between two apps on multiple platforms and my samples can exchange complex custom items between instances on same and different platforms. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;To see this demo working – come to &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;BUILD&lt;/a&gt; 2.0 conference taking place at Redmond, WA (October 30 - November 2, 2012) or the video I will try to film and publish after the BUILD. &lt;/p&gt;

&lt;p&gt;Also – if you are at the BUILD – feel free to find me and say “Hi”. I will be there!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Teaser:&lt;/p&gt;

&lt;p&gt;I have a massive ‘What’s new in Windows Phone 8” series ready to be published after official release!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Stay tuned to more posts to come. &lt;/p&gt;

&lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1378586" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Proximity/default.aspx">Proximity</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Sockets/default.aspx">Sockets</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/wp8dev/default.aspx">wp8dev</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/NFC/default.aspx">NFC</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+8/default.aspx">Windows Phone 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Communication/default.aspx">Communication</category></item><item><title>I’m Microsoft MVP for another year!</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/07/01/i-m-microsoft-mvp-for-another-year.aspx</link><pubDate>Sun, 01 Jul 2012 14:38:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1139761</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1139761</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1139761</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/07/01/i-m-microsoft-mvp-for-another-year.aspx#comments</comments><description>&lt;p&gt;About 10 minutes ago, I received an email presenting me with the &lt;a href="https://mvp.support.microsoft.com/profile=8A4ABD7D-EE07-467C-8B5B-2FEFCDF09157"&gt;Microsoft MVP&lt;/a&gt; Award in Silverlight!&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_1EADF18D.png" width="819" height="295" /&gt;&lt;/p&gt;  &lt;p&gt;I am very honored to receive an MVP Award for the fourth time in row and I will continue contributing to the online and offline developer community worldwide.&lt;/p&gt;  &lt;p&gt;This is a great opportunity and place to &lt;strong&gt;thank&lt;/strong&gt; quite a few people who helped me to win this Award again:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;My &lt;strong&gt;wife&lt;/strong&gt; and &lt;strong&gt;daughter&lt;/strong&gt; for having &lt;u&gt;so much patience&lt;/u&gt; and providing the best support I could only dream about! &lt;/li&gt;    &lt;li&gt;My current and past managers (David, Ishai, Caro) and coworkers at &lt;a href="http://www.sela.co.il/en" target="_blank"&gt;Sela Group&lt;/a&gt;, which is easily the best software company to work for that I could think of; &lt;/li&gt;    &lt;li&gt;All other peoples who helped me get this MVP award; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Stay tuned for news and&amp;#160; posts on Windows Phone and Windows 8!&lt;/p&gt;  &lt;p&gt;Alex &lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1139761" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight+for+Windows+Phone/default.aspx">Silverlight for Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/WinRT/default.aspx">WinRT</category></item><item><title>Windows 8 Release Preview</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/31/windows-8-release-preview.aspx</link><pubDate>Thu, 31 May 2012 19:18:34 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1108379</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1108379</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1108379</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/31/windows-8-release-preview.aspx#comments</comments><description>&lt;p&gt;Windows 8 Release Preview (RP) was published and can be downloaded by anyone who want to try this great preview of upcoming OS!&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_0FB526AD.png" width="856" height="246" /&gt;&lt;/p&gt;  &lt;p&gt;More info about it here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://windows.microsoft.com/en-US/windows-8/release-preview" href="http://windows.microsoft.com/en-US/windows-8/release-preview"&gt;http://windows.microsoft.com/en-US/windows-8/release-preview&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download the version to try from here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://windows.microsoft.com/en-US/windows-8/download" href="http://windows.microsoft.com/en-US/windows-8/download"&gt;http://windows.microsoft.com/en-US/windows-8/download&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For those, who want to grab ISO images links could be found at the following location:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://windows.microsoft.com/en-US/windows-8/iso" href="http://windows.microsoft.com/en-US/windows-8/iso"&gt;http://windows.microsoft.com/en-US/windows-8/iso&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(this link also provides the product key to use)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Developers, developers, developers!&lt;/strong&gt; Updated version version of Visual Studio 2012 Express RC for Windows 8 can be downloaded from the following lcoation:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/windows/apps/br229516.aspx" href="http://msdn.microsoft.com/en-us/windows/apps/br229516.aspx"&gt;http://msdn.microsoft.com/en-us/windows/apps/br229516.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Aside tools you can find updated design assets, sample apps and Live SDK!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned for more updated to come!&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1108379" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Csharp/default.aspx">Csharp</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/HTML5/default.aspx">HTML5</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/RC/default.aspx">RC</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category></item><item><title>Book review: Microsoft Silverlight 5 and Windows Azure Enterprise Integration</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/20/book-review-microsoft-silverlight-5-and-windows-azure-enterprise-integration.aspx</link><pubDate>Sun, 20 May 2012 15:23:29 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1097590</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1097590</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1097590</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/20/book-review-microsoft-silverlight-5-and-windows-azure-enterprise-integration.aspx#comments</comments><description>&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_6D62D08A.png" width="393" height="484" /&gt;   &lt;p&gt;As promised &lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/10/it-s-reading-time.aspx" target="_blank"&gt;here&lt;/a&gt;, here is overview of the book I just finished to read.&lt;/p&gt;  &lt;p&gt;First of all – my congratulations to author of the book, David Burela, as the book written very clear and describes both, basics and advanced concepts, I very practical and professional way. From other hand, author made this book also enjoyable!&lt;/p&gt;  &lt;p&gt;Now about the book itself. It has 12 chapter which overview whole spectrum of possibilities of how to integrate Windows Azure and Silverlight application.&lt;/p&gt;  &lt;p&gt;It starts from traditional intro chapters – Intro to Visual Studio, tools, creating Windows Azure account and intro to Windows Azure itself.&lt;/p&gt;  &lt;p&gt;Next, 3rd chapter, describes basics of creating Silverlight application and consuming some Azure functionality… While those 3 chapter lack some new info for me personally, I really enjoyed the&amp;#160; way author overviewed the basics because it gives the less experienced audience nice starting point to dive deeper into the book.&lt;/p&gt;  &lt;p&gt;In chapters 4-7 authors overviews all possible ways to use Windows Azure services (like Queues, Blob storage, Table storage, SQL Azure) from within Silverlight application. The chapters shows very clean and practical way to use this functionality and gives practical advises of how to make it work. In some cases I felt that presented scenarios is little bit simplified for real world enterprise apps, but from other hand it also enabled very clean sample code and good explanation of the topics.&lt;/p&gt;  &lt;p&gt;Second part of the book (chapters 8 – 12) is where I really enjoyed every moment. Those chapters author explained more advanced concepts such as consuming SQL Azure data using RIA Services, consuming OData,&amp;#160; authentication and caching techniques. Again, those chapters presented those concepts in very clear and very practical way. &lt;/p&gt;  &lt;p&gt;To summarize, many great information in one place and a lot of walkthrough scenarios makes this book one of my favorites in this specific area. After reading and enjoying this book I can recommend it to anyone who looking for guidance in Silverlight and Azure integration!&lt;/p&gt;  &lt;p&gt;More info about the book:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book" target="_blank"&gt;http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned,&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1097590" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight+5/default.aspx">Silverlight 5</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Book/default.aspx">Book</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Review/default.aspx">Review</category></item><item><title>Books, books, books</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/10/books-books-books.aspx</link><pubDate>Thu, 10 May 2012 18:35:34 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1088602</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1088602</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1088602</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/10/books-books-books.aspx#comments</comments><description>&lt;p&gt;Seems like today is “books” day.&lt;/p&gt;  &lt;p&gt;Working really hard for last few months, I completely forgot to blog about the book which I took part in! &lt;/p&gt;  &lt;p&gt;Announcing: &lt;strong&gt;Real World .NET, C#, and Silverlight: Indispensible Experiences from 15 MVPs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="margin:5px 5px 5px 0px;" alt="cover_image" src="http://d2t3xdwbh1v8qy.cloudfront.net/content/B0062ZNJIM/images/1002837646.jpg" width="560" /&gt;&lt;/p&gt;  &lt;p&gt;Few months ago, 15 MVPs from around the globe joined together to write an ultimate resource book for discovering and understanding the C#, .NET 4 Framework and Windows Phone 7.5. Today the book is published, and available at Amazon.com:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/Real-World-NET-Silverlight-Indispensible/dp/1118021967/"&gt;http://www.amazon.com/Real-World-NET-Silverlight-Indispensible/dp/1118021967/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Whole book is very good but I especially recommend Chapter 8, written by yours truly &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.microsoft.co.il/blogs/alex_golesh/wlEmoticon-winkingsmile_2CB3B103.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/image_318E66F0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 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="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_thumb_16E1CAD7.png" width="511" height="487" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned about more interesting updates to come,&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1088602" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Off+Topic/default.aspx">Off Topic</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight+for+Windows+Phone/default.aspx">Silverlight for Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/XNA+4.0/default.aspx">XNA 4.0</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Book/default.aspx">Book</category></item><item><title>It’s reading time!</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/10/it-s-reading-time.aspx</link><pubDate>Thu, 10 May 2012 18:18:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1088591</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1088591</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1088591</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/10/it-s-reading-time.aspx#comments</comments><description>&lt;p&gt;Just got my hands on new book “Microsoft Silverlight 5 and Windows Azure Enterprise Integration” by David Burela.&lt;/p&gt;  &lt;p&gt;The book overview looks very promising and should give me a details how create scalable enterprise applications using Silverlight 5 (yes, it is still my favorite technology!) and take advantage of Windows Azure key features. It also provides an overview of the Windows Azure platform and how the different technologies can be integrated within your enterprise application and examine ways that distributed asynchronous systems can be created to allow scalable processing. &lt;/p&gt;  &lt;p&gt;More info about the book could be found here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book" href="http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book" target="_blank"&gt;http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will post a short overview about the book after finishing with it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay updated.&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1088591" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Off+Topic/default.aspx">Off Topic</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Silverlight+5/default.aspx">Silverlight 5</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Book/default.aspx">Book</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Enterprise/default.aspx">Enterprise</category></item><item><title>My Session at Sela SDP 2012</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/03/26/my-session-at-sela-sdp-2012.aspx</link><pubDate>Mon, 26 Mar 2012 05:29:46 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1043555</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1043555</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1043555</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/03/26/my-session-at-sela-sdp-2012.aspx#comments</comments><description>&lt;p&gt;&lt;img style="margin:5px 5px 5px 0px;" title="image" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/alex_golesh/image_1F25BC51.png" width="235" height="301" /&gt;Yesterday I delivered a session about live tiles, toasts and push notifications in Windows 8. I like to thank all the participants – you were great and I had a great pleasure to present for such quality audience. I loved the questions and the conversation after the session. &lt;/p&gt;  &lt;p&gt;The slides deck I used for presentation can be viewed online &lt;a href="http://www.slideshare.net/alexgolesh/engaging-users-with-live-tiles-and-notifications" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks and stay tuned for more updates,&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1043555" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/SDP/default.aspx">SDP</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Push+Notifications/default.aspx">Push Notifications</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/WinRT/default.aspx">WinRT</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Live+Tile/default.aspx">Live Tile</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Toast/default.aspx">Toast</category></item><item><title>Microsoft Official HTML5 Course</title><link>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/03/15/microsoft-official-html5-course.aspx</link><pubDate>Thu, 15 Mar 2012 18:34:47 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1034190</guid><dc:creator>Alex Golesh</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/rsscomments.aspx?PostID=1034190</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/alex_golesh/commentapi.aspx?PostID=1034190</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/03/15/microsoft-official-html5-course.aspx#comments</comments><description>&lt;p&gt;&lt;img style="margin:5px 5px 5px 0px;display:inline;float:right;" title="" alt="HTML5 Logo" align="right" src="http://www.w3.org/html/logo/downloads/HTML5_Badge_256.png" width="261" height="266" /&gt;During last few months I was co-authoring the Microsoft Official Course (MOC) named “HTML5 programming” with my colleagues at &lt;a href="http://selagroup.com/" target="_blank"&gt;Sela&lt;/a&gt; - &lt;a href="http://noam.kfir.cc/blog/" target="_blank"&gt;Noam Kfir&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/" target="_blank"&gt;Gil Fink&lt;/a&gt;. About a month ago I delivered a first Beta of this course in Redmond, WA and finally the course is scheduled to be published on April 20, 2012. &lt;/p&gt;  &lt;p&gt;It was a very intensive experience with tight deadlines but we made it and the course is on its way for publishing. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;A few details about the course:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It is three-day instructor-led course. &lt;/li&gt;    &lt;li&gt;The course is lab oriented – the students will write a web application and enhance it with HTML5 features and APIs during the course. &lt;/li&gt;    &lt;li&gt;The course covers many aspect of HTML5 such as the new elements, Canvas, SVG, animation, multimedia, CSS3, JavaScript APIs and more. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For more details about the course refer to the following &lt;a href="http://www.microsoft.com/learning/en/us/Course.aspx?ID=10953A" target="_blank"&gt;location&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I had a great pleasure working with my outstanding colleagues at &lt;a href="http://selagroup.com/" target="_blank"&gt;Sela&lt;/a&gt; and &lt;a href="http://www.microsoft.com/en-us/default.aspx" target="_blank"&gt;Microsoft Learning&lt;/a&gt; (all of them!) which all together made it possible! Thank you all!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy the course and stay tuned,&lt;/p&gt;  &lt;p&gt;Alex&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1034190" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/HTML/default.aspx">HTML</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/HTML5/default.aspx">HTML5</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/CSS/default.aspx">CSS</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/CSS3/default.aspx">CSS3</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Canvas/default.aspx">Canvas</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/MOC/default.aspx">MOC</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/Course/default.aspx">Course</category><category domain="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/tags/SVG/default.aspx">SVG</category></item></channel></rss>