<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Блог Стаса Павлова</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/stasus/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/stasus/feed.xml</link>
    <description>Платформа Microsoft для разработчиков и специалистов по ИТ</description>
    <lastBuildDate>Wed, 17 Apr 2019 04:05:36 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Лучшие практики управления жизненным циклом ПО в государственных организациях</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/23</link>
      <pubDate>Wed, 01 Oct 2014 01:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2014/10/01/23/</guid>
      <description><![CDATA[На мероприятии c докладами выступят эксперты Microsoft, и представители крупных российских...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/6888.ALM%20in%20Public.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/6888.ALM-in-Public.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/6888.ALM%20in%20Public.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/6888.ALM-in-Public.jpg" alt="" width="575" height="115" border="0" /></a></p>
<p>На мероприятии c докладами выступят эксперты Microsoft, и представители крупных российских государственных предприятий, которые увидели для себя преимущества в инструментарии Microsoft ALM. Эксперты поделятся опытом внедрения и управления жизненным циклом приложений.</p>
<p>Мероприятие пройдёт <strong>22 октября, в Москве в Microsoft Technology Center</strong></p>
<p>В ходе мероприятия будут рассмотрены несколько ключевых сценариев управления проектами по разработке ПО.Отдельное внимание мы уделим теме управления подрядчиками и повышение эффективности заказного ПО.</p>
<p><strong>В программе:</strong></p>
<ul>
<li>Современные тренды разработки и сопровождения Информационных систем</li>
<li>Использование платформы Microsoft ALM в крупных и государственных структурах на примере ГНиВЦ ФНС России</li>
<li>Практики управления проектами по разработке посредством интеграции Project Server и Microsoft ALM</li>
<li>Управления подрядчиками. Повышение эффективности заказной разработки за счет формализации требований и обеспечения прозрачности процессов разработки Программного обеспечения</li>
<li>Управление качеством</li>
<li>Автоматизация процесса документирования посредством интеграции с MS Office</li>
<li>Оценка эффективности от внедрения Microsoft ALM</li>
</ul>
<p><strong>Ждем вас на мероприятии!</strong></p>
<p>Участие в мероприятии бесплатно. <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032596007&amp;Culture=ru-RU" rel="nofollow" target="_blank">Необходима регистрация</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Серия лабораторных работ по разработке, тестированию и управлению жизненным циклом ПО для Visual Studio 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/33</link>
      <pubDate>Sun, 14 Sep 2014 22:22:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2014/09/14/33/</guid>
      <description><![CDATA[Многим разработчикам и тестеровщикам, использующим Visual Studio, известен Брайан Келлер...]]></description>
      <content:encoded><![CDATA[<p>Многим разработчикам и тестеровщикам, использующим Visual Studio, известен Брайан Келлер (<a href="http://blogs.msdn.com/b/briankel/">http://blogs.msdn.com/b/briankel/</a> ) с его регулярно обновляемой виртуальной машиной, которая содержит последнюю версию Visual Studio и всю необходимую инфраструктуру для изучения и оценки всех возможностей средств разработки. Эта виртуальная машина сопровождается набором лабораторных работ <a href="https://aka.ms/VS13ALMVM">aka.ms/VS13ALMVM</a>, которые уже помогают оценить возможности средств разработки или даже научиться использовать новые возможности о которых вы либо не знали, либо не пользовались раньше. <br /><br />Лабораторные работы &mdash; на английском языке, и каждый раз, когда мы рассказывали об этом наборе лабораторных и виртуальной машине, нас просили сделать эти лабораторные работы доступными на русском языке.<br /><br />Сегодня мы рады сообщить, что благодаря <a title="Alex Belotserkovsky" href="http://blogs.msdn.com/b/albe/" target="_blank">ahriman</a>, мы запустили проект по локализации этих лабораторных работ. Встречайте &mdash; <strong>полный набор из 24-х локализованых лабораторных работ</strong>, которые покрывают темы&nbsp;эффективной разработки, тестирования, совместной разработки и управления&nbsp;жизненным циклом ПО&nbsp;для&nbsp;Visual Studio 2013!</p>
<p>Вы можете <a title="скачать и установить Visual Studio 2013" href="http://www.visualstudio.com/ru-ru/downloads">скачать и установить</a>&nbsp;Visual Studio 2013 самостоятельно или воспользоваться вирутальной машиной, подготовленной Брайаном Келлером, воспользовавшись инструкцией для скачивания из его записи в блоге&nbsp;<a href="https://aka.ms/VS13ALMVM">aka.ms/VS13ALMVM</a>. Это <strong>виртуальная машина на базе&nbsp;Hyper-V и она "из коробки" работает на</strong>&nbsp;<strong>Windows Server 2008 x64, Windows Server 2008 R2 SP1, Windows 8 (если процессор с поддержкой SLAT), Windows 8.1, Windows Server 2012, и Windows Server 2012 R2</strong>. Также обратите внимание, что каждый раз при старте виртуальной машины, время в ней устанавливается на 9 июля 2013 года, это сделано, чтобы вы могли удобно выполнять лабораторные работы.&nbsp;</p>
<p>Что содержит виртуальная машина?</p>
<ul>
<li>Microsoft Windows Server 2012 Standard Evaluation</li>
<li>Microsoft Visual Studio Ultimate 2013</li>
<li>Microsoft Visual Studio Team Foundation Server 2013</li>
<li>Microsoft Office Professional Plus 2013 (Word, PowerPoint, Excel, Outlook)</li>
<li>Microsoft Visio Professional 2013</li>
<li>Microsoft Release Management for Visual Studio 2013</li>
<li>Microsoft SQL Server 2012 Standard</li>
<li>Примеры пользовательских данных для выполнения 24 лабораторных работ</li>
</ul>
<div>Итак, лабораторные работы <strong>на русском языке</strong> в алфавитом порядке (у одной лабораторной я оставил английское название, но текст переведён):</div>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4064.Code%20Discovery%20using%20the%20Architecture%20Tools%20in%20Visual%20Studio%20Ultimate%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4064.Code Discovery using the Architecture Tools in Visual Studio Ultimate 2013.docx">Code Discovery с помощью Architecture Tools в Visual Studio Ultimate 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4011.Code%20Analysis%20with%20Visual%20Studio%202013%20to%20Improve%20Code%20Quality.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4011.Code Analysis with Visual Studio 2013 to Improve Code Quality.docx">Анализ и повышение качества кода инструментами Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/0508.Using%20the%20Architecture%20Explorer%20in%20Visual%20Studio%20Ultimate%202013%20to%20Analyze%20Your%20Code.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/0508.Using-the-Architecture-Explorer-in-Visual-Studio-Ultimate-2013-to-Analyze-Your-Code.docx">Анализ кода с помощью Visual Studio Ultimate 2013 Architecture Explorer</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/2783.Introduction%20to%20PreEmptive%20Analytics.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/2783.Introduction to PreEmptive Analytics.docx">Введение в Preemptive Analytics</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/1307.Understanding%20Class%20Coupling%20with%20Visual%20Studio%20Ultimate%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/1307.Understanding Class Coupling with Visual Studio Ultimate 2013.docx">Взаимосвязь классов в Visual Studio Ultimate 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/3806.Branching%20and%20Merging%20Visualization%20with%20Visual%20Studio%20Team%20Foundation%20Server%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/3806.Branching and Merging Visualization with Visual Studio Team Foundation Server 2013.docx">Визуализация ветвления и слияния в Visual Studio Team Foundation Server 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/3652.Getting%20Started%20with%20Git%20using%20Team%20Foundation%20Server%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/3652.Getting Started with Git using Team Foundation Server 2013.docx">Выявление проблем в промышленной среде с помощью IntelliTrace и Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4760.Diagnosing%20Issues%20in%20Production%20with%20IntelliTrace%20and%20Visual%20Studio%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4760.Diagnosing Issues in Production with IntelliTrace and Visual Studio 2013.docx">Выявление проблем в промышленной среде с помощью IntelliTrace и Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/5460.Exploratory%20Testing%20using%20Microsoft%20Test%20Manager%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/5460.Exploratory Testing using Microsoft Test Manager 2013.docx">Выявление проблем в промышленной среде с помощью IntelliTrace и Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/5850.Agile%20Planning%20and%20Portfolio%20Management%20with%20Team%20Foundation%20Server%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/5850.Agile Planning and Portfolio Management with Team Foundation Server 2013.docx">Гибкое планирование и управление портфолио с помощью Team Foundation Server 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/0576.Continuous%20Delivery%20with%20Release%20Management%20for%20Visual%20Studio%202013%20ALBE%20to%20review.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/0576.Continuous Delivery with Release Management for Visual Studio 2013 ALBE to review.docx">Непрерывное развёртывание с помощью Release Management для Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4743.New%20Collaboration%20Experiences%20for%20Development%20Teams%20using%20Team%20Foundation%20Server%202013%20ALBE%20to%20review.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4743.New Collaboration Experiences for Development Teams using Team Foundation Server 2013 ALBE to review.docx">Новые инструменты Team Foundation Server 2013 для взаимодействия между командами разработки</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4062.Introduction%20to%20Coded%20UI%20Tests%20with%20Visual%20Studio%20Ultimate%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4062.Introduction to Coded UI Tests with Visual Studio Ultimate 2013.docx">Обзор тестов Coded UI в Visual Studio Ultimate 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/5775.Debugging%20with%20IntelliTrace%20using%20Visual%20Studio%20Ultimate%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/5775.Debugging with IntelliTrace using Visual Studio Ultimate 2013.docx">Отладка IntelliTrace в Visual Studio Ultimate 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/2577.Introduction%20to%20Test%20Planning%20with%20Microsoft%20Test%20Manager%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/2577.Introduction to Test Planning with Microsoft Test Manager 2013.docx">Планирование тестов в Microsoft Test Manager 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/5187.Introduction%20to%20Platform%20Testing%20with%20Microsoft%20Test%20Manager%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/5187.Introduction to Platform Testing with Microsoft Test Manager 2013.docx">Платформенное тестирование в Microsoft Test Manager 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/0743.Making%20Developers%20More%20Productive%20with%20Visual%20Studio%20Team%20Foundation%20Server%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/0743.Making Developers More Productive with Visual Studio Team Foundation Server 2013.docx">Повышение продуктивности разработчиков с помощью Visual Studio Team Foundation Server 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4722.Authoring%20and%20Running%20Manual%20Tests%20using%20Microsoft%20Test%20Manager%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4722.Authoring and Running Manual Tests using Microsoft Test Manager 2013.docx">Создание и использование ручных тестов в Microsoft Test Manager 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/4135.Introduction%20to%20Web%20Performance%20and%20Load%20Testing%20with%20Visual%20Studio%20Ultimate%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/4135.Introduction to Web Performance and Load Testing with Visual Studio Ultimate 2013.docx">Тестирование веб-производительности и нагрузки в Visual Studio Ultimate 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/1200.Testing%20and%20Debugging%20SharePoint%20Applications%20with%20Visual%20Studio%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/1200.Testing and Debugging SharePoint Applications with Visual Studio 2013.docx">Тестирование и отладка Sharepoint-приложений в Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/0488.Lab%20Management%20using%20Standard%20Lab%20Environments%20in%20Visual%20Studio%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/0488.Lab-Management-using-Standard-Lab-Environments-in-Visual-Studio-2013.docx">Управление лабораторными средами в Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/2627.Introduction%20to%20Test%20Case%20Management%20with%20Microsoft%20Test%20Manager%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/2627.Introduction to Test Case Management with Microsoft Test Manager 2013.docx">Управление тестовыми ситуациями в Microsoft Test Manager 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/8540.Unit%20Testing,%20Code%20Coverage%20and%20Code%20Clone%20Analysis%20with%20Visual%20Studio%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/8540.Unit Testing, Code Coverage and Code Clone Analysis with Visual Studio 2013.docx">Юнит-тестирование, покрытие кода и анализ похожего кода с помощью Visual Studio 2013</a></span><br /><span style="font-size: small;"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/VS13HOLs/5722.Building%20the%20Right%20Software%20-%20Generating%20Storyboards%20and%20Collecting%20Stakeholder%20Feedback%20with%20Visual%20Studio%202013.docx" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-VS13HOLs/5722.Building-the-Right-Software-_2D00_-Generating-Storyboards-and-Collecting-Stakeholder-Feedback-with-Visual-Studio-2013.docx">Building the Right Software - Generating Storyboards and Collecting Stakeholder Feedback with Visual Studio 2013</a></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Первая студенческая экспресс-школа по Windows 8!</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/53</link>
      <pubDate>Wed, 29 Aug 2012 05:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/08/29/53/</guid>
      <description><![CDATA[15 сентября в Москве, в офисе Microsoft в Крылатском, пройдёт первая студенческая экспресс-школа...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/6472.W8School.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/6472.W8School.png"><img style="margin-right: auto; margin-left: auto; display: block;" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/6472.W8School.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/6472.W8School.png" border="0" /></a></p>
<p><strong>15 сентября в Москве, в офисе Microsoft в Крылатском, пройдёт первая студенческая экспресс-школа по Windows 8. <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032524273&amp;Culture=ru-RU&amp;community=0">Регистрация</a> уже открыта! </strong></p>
<p>Уже совсем скоро станет всем доступна новая ОС от Microsoft &ndash; Windows 8. Эта система объединит возможности разных типов устройств: ноутбуков, планшетов, настольных компьютеров. Для Windows 8 можно будет создавать новые красочные приложения и распространять их через Windows Store.</p>
<p>Всех, кому интересно попробовать себя в роли разработчика нового типа приложений, мы приглашаем на Первую студенческую экспресс-школу по Windows 8.</p>
<p>Мы расскажем про основные принципы разработки под Windows 8, поговорим о возможности монетизации приложений на этой платформе и вместе пройдем путь от идеи до конкретного приложения.</p>
<p>Мы предлагаем вам прийти с командой единомышленников и готовыми идеями, чтобы за один день, вместе с экспертами сообщества и Microsoft, создать прототип своего приложения.</p>
<h4>Немного о формате мероприятия</h4>
<p>Формат мероприятия: &laquo;управляемый хакатон&raquo; с лекциями. <b><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032524273&amp;Culture=ru-RU&amp;community=0">Регистрация</a> обязательна</b>.</p>
<p>Приходить нужно с ноутбуками с установленной <a href="http://msdn.microsoft.com/en-US/evalcenter/jj554510.aspx?wt.mc_id=MEC_132_1_4">Windows 8</a> и <a href="http://msdn.microsoft.com/en-us/windows/apps/hh852659">средствами разработки</a>. В качестве подготовки можно посмотреть <a href="http://www.techdays.ru/videos/Windows%208">записи докладов по Windows 8 на TechDays</a> и посмотреть онлайн-трансляцию <a href="http://www.microsoft.com/ru-ru/events/windowscamp/">Windows Camp</a>, который пройдёт 7 сентября.</p>
<p>На экспресс-школе, вы сможете послушать лекции, пообщаться и задать вопросы специалистам из Microsoft: Константину Кичинскому (<hh user="kichik"></hh>), Дмитрию Сошникову (<hh user="shwars"></hh>) и Стасу Павлову (<hh user="stasus"></hh>).</p>
<h4>Регистрация и участие</h4>
<p><b>Когда</b>: 15 сентября</p>
<p><b>Где</b>: Москва, Крылатское, офис Microsoft</p>
<p><b>Регистрация</b>: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032524273&amp;Culture=ru-RU&amp;community=0">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032524273&amp;Culture=ru-RU&amp;community=0</a></p>
<p><b>Участие</b>: бесплатно, но необходимо зарегистрироваться</p>]]></content:encoded>
    </item>
    <item>
      <title>Осень. Windows 8. Снова в институт. Снова лабы. Application Excellence Labs</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/windows-8</link>
      <pubDate>Tue, 21 Aug 2012 00:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/08/21/windows-8/</guid>
      <description><![CDATA[&nbsp;
Application Excellence Labs пройдут в Москвес&nbsp;24 по 28 сентябряВнимание! Возможен...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/1401.ael550.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/1401.ael550.png"><img style="margin-right: auto; margin-left: auto; display: block;" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/1401.ael550.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/1401.ael550.png" border="0" /></a></p>
<p style="text-align: center;"><span style="font-size: medium;"><strong>Application Excellence Labs пройдут в Москве<br />с&nbsp;24 по 28 сентября<br /><span style="color: #800000; background-color: #ffffff;">Внимание! Возможен удаленный сценарий (Lync, Skype)</span></strong></span></p>
<h1>&nbsp;</h1>
<h1>Application Excellence Labs</h1>
<p><strong></strong>&nbsp;<strong>Что такое Application Excellence Labs?</strong></p>
<ol>
<li>Бесплатная консультация от русскоговорящего эксперта.</li>
<li>Возможность бесплатно и&nbsp;одним из первых попасть в Windows Store.</li>
</ol>
<p><strong>Чем&nbsp;не является&nbsp;Application Excellence Labs?</strong></p>
<ol>
<li>Это не хакатон, летняя школа, буткамп или обучающий семинар - приложение должно быть рабочим и готовым не менее чем на 50%.</li>
</ol>
<p>&nbsp;</p>
<p><span style="color: #000000;"><strong>Что нужно, чтобы принять участие в Application Excellence Lab?</strong> </span></p>
<p><span style="color: #000000;">Необходимо <strong>иметь готовое не менее чем на 50% и работающее приложение в стиле Metro для Windows 8</strong>, прошедшее внутреннюю сертификацию средствами Visual Studio (Windows App Certification Kit). Приложение не обязано проходить полностью все тесты, однако, провести тестирование необходимо.</span></p>
<p><strong><span style="color: #000000;">Как попасть на Application Excellence Labs?</span></strong></p>
<p><span style="color: #000000;">Application Excellence Labs&nbsp;-- очень и очень компактный формат с сильно ограниченным количеством участников. Поэтому среди желающих попасть на лабораторную работу проводится дополнительный отбор:&nbsp;</span>&nbsp;</p>
<ul>
<li><b>До 19&nbsp;сетября </b>пришлите письмо с заявкой на email: <a href="mailto:rush4apps@microsoft.com">rush4apps@microsoft.com</a> c заголовком &ldquo;<b>[W8 </b><b>AEL] Название вашего приложения</b>&rdquo;. В письме укажите</li>
<ul>
<li>Описание приложения (какие задачи оно решает и на какую аудиторию рассчитано)</li>
<li>Скриншоты основных экранов приложения</li>
<li>Результаты тестирования через WACK</li>
<li>Контакты для связи</li>
</ul>
<li>Авторы лучших заявок получат приглашение на <span style="color: #000000;">Application Excellence Labs</span>.</li>
</ul>
<p>&nbsp;</p>
<p><b>Что&nbsp;вы получите в&nbsp;результате участия в Application Excellence Labs?</b></p>
<ol>
<li>Отчет с рекомендациями, как улучшить ваше приложение.&nbsp;</li>
<li><strong>Разработчики самых лучших приложений&nbsp;получат возможность бесплатно и одними из первыми попасть в Windows Store!</strong>&nbsp;</li>
</ol>
<h1>Application Excellence Labs. Формат</h1>
<p>Все хотят, чтобы приложения в&nbsp;Windows Store были действительно&nbsp;качественные -- и мы хотим помочь вам, как разработчику,&nbsp;сделать именно такие. Именно для этого организуются лабораторные работы, в рамках которых можно обсудить&nbsp;с нашим (русскоговорящим)&nbsp;инженером свое приложение, получить экспертный отзыв и как результат прийти к пониманию, как из хорошего приложения сделать отличное.</p>
<p><strong>Как&nbsp;будет проходить Application Excellence Lab:</strong></p>
<ul>
<li>Тестирование приложение в различных сценариях, в том числе на планшете;</li>
<li>Анализ&nbsp;дизайна и компоновки приложения в соответствии с метро стилем.</li>
<li>Анализ&nbsp;компоновки и использованию меню, flayout, &ldquo;оживлению&rdquo; плиток.</li>
<li>Разбор примеров реализации контрактов. Поиска, Share, Settings.</li>
<li>Обсуждение стратегии монетизации приложения.</li>
<li>Ответы на технические вопросы.</li>
</ul>
<p><strong>На всякий случай, ещё раз: Application Excellence Labs пройдут в Москве с&nbsp;24 по 28&nbsp;сентября (<span style="background-color: #ffffff;">возможен удаленный сценарий</span>)</strong></p>
<h1>У&nbsp;кого&nbsp;спросить, если что-то не понятно?</h1>
<p>Оперативно задать вопрос можно в twitter - <a title="@stasus" href="https://twitter.com/#!/stasus">@stasus</a> или Facebook - <a title="pavlov.stas" href="http://www.facebook.com/pavlov.stas">pavlov.stas</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Август. Windows 8. Application Excellence Labs</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/windows-8-application-excellence-labs</link>
      <pubDate>Mon, 30 Jul 2012 03:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/07/30/windows-8-application-excellence-labs/</guid>
      <description><![CDATA[&nbsp;
Application Excellence Labs пройдут в Москвес&nbsp;20 по 24 августаВнимание! Возможен...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/1401.ael550.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/1401.ael550.png"><img style="margin-right: auto; margin-left: auto; display: block;" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/1401.ael550.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/1401.ael550.png" border="0" /></a></p>
<p style="text-align: center;"><span style="font-size: medium;"><strong>Application Excellence Labs пройдут в Москве<br />с&nbsp;20 по 24 августа<br /><span style="color: #800000; background-color: #ffffff;">Внимание! Возможен удаленный сценарий (Lync, Skype)</span></strong></span></p>
<h1>&nbsp;</h1>
<h1>Application Excellence Labs</h1>
<p><strong></strong>&nbsp;<strong>Что такое Application Excellence Labs?</strong></p>
<ol>
<li>Бесплатная консультация от русскоговорящего эксперта.</li>
<li>Возможность бесплатно и&nbsp;одним из первых попасть в Windows Store.</li>
</ol>
<p><strong>Чем&nbsp;не является&nbsp;Application Excellence Labs?</strong></p>
<ol>
<li>Это не хакатон, летняя школа буткамп или обучающий семинар - приложение должно быть рабочим и готовым не менее чем на 50%.</li>
</ol>
<p>&nbsp;</p>
<p><span style="color: #000000;"><strong>Что нужно, чтобы принять участие в Application Excellence Lab?</strong> </span></p>
<p><span style="color: #000000;">Необходимо <strong>иметь готовое не менее чем на 50% и работающее приложение в стиле Metro для Windows 8</strong>, прошедшее внутреннюю сертификацию средствами Visual Studio (Windows App Certification Kit). Приложение не обязано проходить полностью все тесты, однако, провести тестирование необходимо.</span></p>
<p><strong><span style="color: #000000;">Как попасть на Application Excellence Labs?</span></strong></p>
<p><span style="color: #000000;">Application Excellence Labs&nbsp;-- очень и очень компактный формат с сильно ограниченным количеством участников. Поэтому среди желающих попасть на лабораторную работу проводится дополнительный отбор:&nbsp;</span></p>
<p>&nbsp;</p>
<ul>
<li><b>До 15&nbsp;августа </b>пришлите письмо с заявкой на email: <a href="mailto:rush4apps@microsoft.com">rush4apps@microsoft.com</a> c заголовком &ldquo;<b>[W8 </b><b>AEL] Название вашего приложения</b>&rdquo;. В письме укажите</li>
<ul>
<li>Описание приложения (какие задачи оно решает и на какую аудиторию рассчитано)</li>
<li>Скриншоты основных экранов приложения</li>
<li>Результаты тестирования через WACK</li>
<li>Контакты для связи</li>
</ul>
<li>Авторы лучших заявок получат приглашение на <span style="color: #000000;">Application Excellence Labs</span>.</li>
</ul>
<p>&nbsp;</p>
<p><b>Что&nbsp;вы получите в&nbsp;результате участия в Application Excellence Labs?</b></p>
<ol>
<li>Отчет с рекомендациями, как улучшить ваше приложение.&nbsp;</li>
<li><strong>Разработчики самых лучших приложений&nbsp;получат возможность бесплатно и одними из первыми попасть в Windows Store!</strong></li>
</ol>
<h1>&nbsp;</h1>
<h1>Application Excellence Labs. Формат</h1>
<p>Все хотят, чтобы приложения в&nbsp;Windows Store были действительно&nbsp;качественные -- и мы хотим помочь вам, как разработчику,&nbsp;сделать именно такие. Именно для этого организуются лабораторные работы, в рамках которых можно обсудить&nbsp;с нашим (русскоговорящим)&nbsp;инженером свое приложение, получить экспертный отзыв и как результат прийти к пониманию, как из хорошего приложения сделать отличное.</p>
<p><strong>Как&nbsp;будет проходить Application Excellence Lab:</strong></p>
<ul>
<li>Тестирование приложение в различных сценариях, в том числе на планшете;</li>
<li>Анализ&nbsp;дизайна и компоновки приложения в соответствии с метро стилем.</li>
<li>Анализ&nbsp;компоновки и использованию меню, flayout, &ldquo;оживлению&rdquo; плиток.</li>
<li>Разбор примеров реализации контрактов. Поиска, Share, Settings.</li>
<li>Обсуждение стратегии монетизации приложения.</li>
<li>Ответы на технические вопросы.</li>
</ul>
<p><strong>На всякий случай, ещё раз: Application Excellence Labs пройдут в Москве с&nbsp;23 по 27 июля (<span style="background-color: #ffffff;">возможен удаленный сценарий</span>)</strong></p>
<h1>У&nbsp;кого&nbsp;спросить, если что-то не понятно?</h1>
<p>Оперативно задать вопрос можно в twitter - <a title="@stasus" href="https://twitter.com/#!/stasus">@stasus</a> или Facebook - <a title="pavlov.stas" href="http://www.facebook.com/pavlov.stas">pavlov.stas</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Июль. Windows 8. Application Excellence Labs</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/windows-8-application-excellence-labs-2</link>
      <pubDate>Tue, 26 Jun 2012 00:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/06/26/windows-8-application-excellence-labs-2/</guid>
      <description><![CDATA[Application Excellence Labs пройдут в Москвес&nbsp;23 по 27 июляВнимание! Возможен удаленный...]]></description>
      <content:encoded><![CDATA[<p><img style="margin-right: auto; margin-left: auto; display: block;" alt="Application Excellence Labs" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/4527.Application%20Excellence%20Labs.png" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/4527.Application-Excellence-Labs.png" border="0" /></p>
<p style="text-align: center;"><span style="font-size: medium;"><strong>Application Excellence Labs пройдут в Москве<br />с&nbsp;23 по 27 июля<br /><span style="color: #800000; background-color: #ffffff;">Внимание! Возможен удаленный сценарий (Lync, Skype)</span></strong></span></p>
<h1>&nbsp;</h1>
<h1>Application Excellence Labs</h1>
<p><strong></strong>&nbsp;</p>
<p><strong>Что такое Application Excellence Labs?</strong></p>
<ol>
<li>Бесплатная консультация от русскоговорящего эксперта.</li>
<li>Возможность попасть одним из первых в Windows Store.</li>
</ol>
<p><span style="color: #000000;"><strong>Что нужно, чтобы принять участие в Application Excellence Lab?</strong> </span></p>
<p><span style="color: #000000;">Необходимо иметь <strong>работающее приложение в стиле Metro для Windows 8</strong>, прошедшее внутреннюю сертификацию средствами Visual Studio (Windows App Certification Kit). Приложение не обязано проходить полностью все тесты, однако, провести тестирование необходимо.</span></p>
<p><strong><span style="color: #000000;">Как попасть на Application Excellence Labs?</span></strong></p>
<p><span style="color: #000000;">Application Excellence Labs&nbsp;-- очень и очень компактный формат с сильно ограниченным количеством участников. Поэтому среди желающих попасть на лабораторную работу проводится дополнительный отбор:&nbsp;</span></p>
<p>&nbsp;</p>
<ul>
<li><b>До 16 июля </b>пришлите письмо с заявкой на email: <a href="mailto:rush4apps@microsoft.com">rush4apps@microsoft.com</a> c заголовком &ldquo;<b>[W8 </b><b>AEL] Название вашего приложения</b>&rdquo;. В письме укажите</li>
<ul>
<li>Описание приложения (какие задачи оно решает и на какую аудиторию рассчитано)</li>
<li>Скриншоты основных экранов приложения</li>
<li>Результаты тестирования через WACK</li>
<li>Контакты для связи</li>
</ul>
<li>Авторы лучших заявок получат приглашение на <span style="color: #000000;">Application Excellence Labs</span>.</li>
</ul>
<p>&nbsp;</p>
<p><b>Что&nbsp;вы получите в&nbsp;результате участия в Application Excellence Labs?</b></p>
<ol>
<li>Отчет с рекомендациями, как улучшить ваше приложение.&nbsp;</li>
<li><strong>Разработчики самых лучших приложений&nbsp;получат возможность одними из первыми попасть в Windows Store!</strong></li>
</ol>
<h1>&nbsp;</h1>
<h1>Application Excellence Labs. Формат</h1>
<p>Все хотят, чтобы приложения в&nbsp;Windows Store были действительно&nbsp;качественные -- и мы хотим помочь вам, как разработчику,&nbsp;сделать именно такие. Именно для этого организуются лабораторные работы, в рамках которых можно обсудить&nbsp;с нашим (русскоговорящим)&nbsp;инженером свое приложение, получить экспертный отзыв и как результат прийти к пониманию, как из хорошего приложения сделать отличное.</p>
<p><strong>Как&nbsp;будет проходить Application Excellence Lab:</strong></p>
<ul>
<li>Тестирование приложение в различных сценариях, в том числе на планшете;</li>
<li>Анализ&nbsp;дизайна и компоновки приложения в соответствии с метро стилем.</li>
<li>Анализ&nbsp;компоновки и использованию меню, flayout, &ldquo;оживлению&rdquo; плиток.</li>
<li>Разбор примеров реализации контрактов. Поиска, Share, Settings.</li>
<li>Обсуждение стратегии монетизации приложения.</li>
<li>Ответы на технические вопросы.</li>
</ul>
<p><strong>На всякий случай, ещё раз: Application Excellence Labs пройдут в Москве с&nbsp;23 по 27 июля (<span style="background-color: #ffffff;">возможен удаленный сценарий</span>)</strong></p>
<h1>У&nbsp;кого&nbsp;спросить, если что-то не понятно?</h1>
<p>Оперативно задать вопрос можно в twitter - <a title="@stasus" href="https://twitter.com/#!/stasus">@stasus</a> или Facebook - <a title="pavlov.stas" href="http://www.facebook.com/pavlov.stas">pavlov.stas</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Предварительная версия обновления Windows Phone SDK с поддержкой телефонов с 256Мб памяти</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/93</link>
      <pubDate>Mon, 27 Feb 2012 02:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/02/27/93/</guid>
      <description><![CDATA[Сегодня на Mobile World Congress 2012 была анонсирована доступность Windows Phone 7.5 на новых...]]></description>
      <content:encoded><![CDATA[<p>Сегодня на Mobile World Congress 2012 была анонсирована доступность Windows Phone 7.5 на новых аппаратных платформах с более дешёвым процессором (Qualcomm 7x27a SoC) и всего 256 Мб памяти на борту. За этим простым, на первый взгляд сообщением стоит нешуточная работа команды разработчиков, которые добились существенной оптимизации в&nbsp; работе операционной системы так, что практически все 65000 ранее опубликованных приложений будут работать на этой аппаратной платформе.</p>
<p>В помощь тем разработчикам, которые прямо сейчас хотят проверить, как их приложения будут устанавливаться и работать на этих новых устройствах, была выпущена предварительная версия обновления Windows Phone SDK, в которую входит эмулятор на 256 Мб оперативной памяти.</p>
<p>Обновление уже достпно для загрузки: <a title="Windows Phone SDK 7.1.1 Update - CTP" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28962" target="_blank">Windows Phone SDK 7.1.1 Update &ndash; CTP</a>.</p>
<p>Вместе с анонсом доступности системы на новых аппаратных платформах, было объявлено, что в ближайший месяц планируется, что Marketplace станет доступен в Бахрейне, Болгарии, Китае, Кота-Рике, Хорватии, Эстонии, Исландии, Ираке, Израиле, Казахстане, Латвии, Литве, Катаре, Румынии, Саудовской Аравии, Словакии, Словении, Таиланде, Турции, ОАЭ, Украине, Венесуэле и Вьетнаме.</p>
<p>При этом, совсем недавно Marketplace уже стал доступн в Аргентине, Индонезии, Малайзии, Перу и Филиппинах.</p>
<p>Это потенциально 28 новых рынков для ваших приложений, а с доступностью новой аппаратной платформы &ndash; потенциально огромные возможности для продвижения своих приложений.</p>
<p>Так что если вы хотите опубликовать своё приложение на новые рынки &ndash; зайдите в AppHub и запустите процесс публикации свиох приложений для новых рынков &ndash; это не происходит автоматически &ndash; не упускайте свой шанс!</p>]]></content:encoded>
    </item>
    <item>
      <title>DevCon’12: Начало. Расписание, темы и теги конференции.</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/devcon12</link>
      <pubDate>Tue, 24 Jan 2012 01:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/01/24/devcon12/</guid>
      <description><![CDATA[На главной странице моего блога, вы видите баннер конференции DevCon&rsquo;12. Почему? Потому что...]]></description>
      <content:encoded><![CDATA[<p><img style="margin-right: auto; margin-left: auto; display: block;" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/3010.devcon12.jpg" original-url="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58/3010.devcon12.jpg" border="0" /></p>
<p>На главной странице моего блога, вы видите баннер конференции DevCon&rsquo;12. Почему? Потому что я один из организаторов конференции. Я отвечаю за содержание конференции. Это я планирую темы, ищу тех, кто будет отвечать за каждую тему, и это мне можно присылать запросы, если вы хотите поучаствовать в конференции с докладом.</p>
<p>Сейчас холодный январь и, кажется, что теплая весна и конференция DevCon&rsquo;12, которая пройдёт 23-24 мая ещё не скоро. Для участников это может быть и так, но не для нас, команды, которая делает DevCon&rsquo;12. Для нас конференция началась уже давно. Если быть точнее, за 3 месяца до начала конференции <a href="http://msteched.ru">TechEd Russia 2011</a> мы уже начали планирование конференции <a href="http://www.msdevcon.ru">DevCon&rsquo;12</a>. Интересный факт. На следующий день, после окончания TechEd Russia 2011, мы уже осматривали одну из предполагаемых площадок для DevCon&rsquo;12!</p>
<p>Задолго до того, как мы рассказали о том, что вторая ежегодная (в новом цикле) конференция DevCon состоится в мае 2012, в традиционно загородном формате, мы начали подбирать темы конференции и докладчиков, решать множество организационных и не только вопросов, о которых я даже и не догадывался, когда был просто участником конференции.</p>
<p>Сегодня я хочу немного рассказать о планируемом расписанием конференции.</p>
<p>Конференция будет проходить 2 дня в загородном формате. Первый день традиционно начнётся с пленарного доклада, после чего продолжится сессиями до конца дня, параллельно с которыми будут идти BootCamp-ы. Вечером предполагается как традиционная развлекательная программа, так и &laquo;Ночь кодирования&raquo; для тех, кто и за городом любит написать ночью пару-другую строчек кода.</p>
<p>Второй день начнётся с хорошо зарекомендовавшего себя сета мини-сессий от наших партнёров и представителей сообщества. Затем программу второго дня продолжит пленарный доклад, после чего до конца дня можно будет как слушать доклады, так и поучаствовать в BootCamp-ах или мастер-классах. В конце дня будет традиционное закрытие конференции.</p>
<p>Конечно, у нас будет выставка Microsoft и партнёров, а также так любимый всеми стенд &laquo;Спроси эксперта&raquo;.</p>
<p>В этом году мы планируем отказаться от понятия &laquo;трек&raquo;. Я думаю, это только путает участников конференции. Тем боле, что клиентская разработка &ndash; это и настольные ПК, и ноутбуки, и планшеты и мобильные телефоны. А HTML5 &ndash; это теперь не только веб, но и телефон и компьютер. Мы планируем разбить доклады по ключевым темам (их список вы уже видите на сайте конференции). а затем, прямо в расписании, добавить технологические теги: Windows, Windows Phone, Visual Studio, ALM. SQL Server, SharePoint, HTML5, JavaScript, XAML, C++ и т.д. Думаю, это позволит участникам лучше понять о чём будет доклад.</p>
<p>Кстати, до 13 февраля, действует <a title="специальное предложение на участие в DevCon&rsquo;12" href="http://www.msdevcon.ru/conditions" target="_blank">специальное предложение на участие в DevCon&rsquo;12</a>.</p>
<p>До встречи на DevCon&rsquo;12!</p>]]></content:encoded>
    </item>
    <item>
      <title>Переключение слайдов презентации с использованием Windows Phone: UDP соединение</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/113</link>
      <pubDate>Mon, 16 Jan 2012 06:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/01/16/113/</guid>
      <description><![CDATA[В продолжение темы использования Windows Phone в качестве устройства переключения слайдов,...]]></description>
      <content:encoded><![CDATA[<p>В <a title="продолжение темы использования Windows Phone в качестве устройства переключения слайдов" href="http://blogs.msdn.com/b/stasus/archive/2011/12/30/windows-phone-power-point-presenter-using-tcp-connection.aspx" target="_blank">продолжение темы использования Windows Phone в качестве устройства переключения слайдов</a>, представим себе гипотетическую ситуацию, когда сразу нам надо сразу на нескольоких ноутбуках переключать презентацию одновременно. Будем использовать для этого возможности UDP - Mulitcast Group, позволяющий разослать всем присоединившимся к групее сообщение.</p>
<p>Как обычно начнём с серверной части, которая будет слушать сообщения с телефона&nbsp; и выполнять необходимые действия. Можно за основу взять приложение из предыдущей статьи <a href="http://blogs.msdn.com/b/stasus/archive/2011/12/30/windows-phone-power-point-presenter-using-tcp-connection.aspx" target="_blank">Переключение слайдов презентации с использованием Windows Phone: TCP соединение</a>, здесь же я напишу приложение &ldquo;заново&rdquo;.</p>
<p>Итак, мы пишем простое приложение на WinForm, которое будет открывать и запускать презентацию. Кроме этого, оно же будет запускать локальный сервис, который будет слушать по определённому порту данные с телефона и сохранять их во внутреннюю структуру. В рамках решения задачи переключения слайдов, безусловно, гораздо проще просто передавать команды &ldquo;Вперёд/Назад&rdquo;, но я хочу показать, как можно работать с &ldquo;потоком&rdquo; данных с телефона.</p>
<p>Итак, приступим к созданию WinForm приложения. Это будет простая форма с двумя кнопками,. Одна кнопка для открытия файла презентации, другая для запуска презентации.</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/metablogapi/6644.udp-article-1_07CF8036.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-metablogapi/6644.udp_2D00_article_2D00_1_5F00_07CF8036.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="udp-article-1" border="0" alt="udp-article-1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/44/58/metablogapi/8371.udp-article-1_thumb_57C52EB4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-44-58-metablogapi/8371.udp_2D00_article_2D00_1_5F00_thumb_5F00_57C52EB4.png" width="359" height="102" /></a></p>
<p>Добавим в проект ссылки на InterOp сборки PowerPoint и Office и возьмём код из предыдущего примерра, отвечающий за открытие и запуск презентации:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.Windows.Forms</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">using</span> <span style="color: #008080;">PowerPoint </span><span style="color: #008000;">=</span> Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Interop</span>.<span style="color: #0000ff;">PowerPoint</span><span style="color: #008000;">;</span>     </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">namespace</span> PowerPointController
<span style="color: #000000;">{</span>
    <span style="color: #0600ff;">public</span> <span style="color: #0600ff;">partial</span> <span style="color: #ff0000;">class</span> Main <span style="color: #008000;">:</span> Form
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">private</span> <span style="color: #ff0000;">string</span> _pptFileName <span style="color: #008000;">=</span> <span style="color: #666666;">""</span><span style="color: #008000;">;</span>
        PowerPoint.<span style="color: #0000ff;">Presentation</span> presesntation<span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> Main<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            InitializeComponent<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">         <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> SelectPPT_Click<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, EventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            OpenFileDialog ofd <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> OpenFileDialog<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>ofd.<span style="color: #0000ff;">ShowDialog</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">==</span>DialogResult.<span style="color: #0000ff;">OK</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                _pptFileName <span style="color: #008000;">=</span> ofd.<span style="color: #0000ff;">FileName</span><span style="color: #008000;">;</span>   <span style="color: #000000;">}</span>
        <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> RunPPT_Click<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, EventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>File.<span style="color: #0000ff;">Exists</span><span style="color: #000000;">(</span>_pptFileName<span style="color: #000000;">)</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>   PowerPoint.<span style="color: #0000ff;">Application</span> application <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PowerPoint.<span style="color: #0000ff;">Application</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                presesntation <span style="color: #008000;">=</span> application.<span style="color: #0000ff;">Presentations</span>.<span style="color: #0000ff;">Open</span><span style="color: #000000;">(<br /> </span>_pptFileName,<br />                               Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Core</span>.<span style="color: #0000ff;">MsoTriState</span>.<span style="color: #0000ff;">msoTrue</span><span style="color: #000000;">)</span><span style="color: #008000;">;<br /> </span>PowerPoint.<span style="color: #0000ff;">SlideShowSettings</span> sst <span style="color: #008000;">=</span> presesntation.<span style="color: #0000ff;">SlideShowSettings</span><span style="color: #008000;">;</span>
                </pre>
<pre style="font-family: monospace;" class="csharp">                sst.<span style="color: #0000ff;">ShowType</span> <span style="color: #008000;">=</span> Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Interop</span>.<span style="color: #0000ff;">PowerPoint</span>.<span style="color: #0000ff;">PpSlideShowType</span>.<span style="color: #0000ff;">ppShowTypeSpeaker</span><span style="color: #008000;">;</span>
                sst.<span style="color: #0000ff;">Run</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>   <br />            <span style="color: #000000;">}</span>   <br />        <span style="color: #000000;">}</span>   <br />     <span style="color: #000000;">}</span>
<span style="color: #000000;">}</span>  </pre>
<p>Запустите приложение и проверьте, что презентация открывается и запускается. Нам необходимо добавить возможность присоединяться к определённой мультикаст группе, слушать UDP и предсотавлять полученные данные программе. Motion API телефона даёт три угла поворота, вокруг соответствующих осей X, Y, Z, плюс, желательно знать время, когда эти данные получены. Это определяет формат класса PhoneMotion:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">public</span> <span style="color: #ff0000;">class</span> PhoneMotion
<span style="color: #000000;">{</span>
   <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> X<span style="color: #008000;">;</span>
   <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> Y<span style="color: #008000;">;</span>
   <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> Z<span style="color: #008000;">;</span>
   <span style="color: #0600ff;">public</span> DateTime lastUpdateTime<span style="color: #008000;">;</span>
<span style="color: #000000;">}</span></pre>
<p>В качестве основы возмём класс TCP сервера из предыдущего примера:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>&nbsp;&nbsp; <span style="color: #0600ff;">using</span> <span style="color: #008080;">System.Net</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.Net.Sockets</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.Threading</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">namespace</span> PowerPointController
<span style="color: #000000;">{</span>
    <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">class</span> PhoneMotion
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> X<span style="color: #008000;">;</span>
        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> Y<span style="color: #008000;">;</span>
        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">double</span> Z<span style="color: #008000;">;</span>
        <span style="color: #0600ff;">public</span> DateTime lastUpdateTime<span style="color: #008000;">;</span>
    <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">class</span> PhoneListener
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">internal</span> <span style="color: #ff0000;">class</span> PhoneMotionControl
        <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">public</span> PhoneMotionControl<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
            <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            <span style="color: #0600ff;">public</span> PhoneMotion motion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PhoneMotion<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">bool</span> bStop <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">int</span> DefaultPort <span style="color: #008000;">=</span> <span style="color: #ff0000;">9978</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #ff0000;">string</span> _ipAddress <span style="color: #008000;">=</span> <span style="color: #ff0000;">string</span>.<span style="color: #0000ff;">Empty</span><span style="color: #008000;">;</span>
        <span style="color: #0600ff;">private</span> <span style="color: #ff0000;">int</span> _port <span style="color: #008000;">=</span> DefaultPort<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> Thread _clientThread <span style="color: #008000;">=</span> null<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> PhoneMotionControl _motion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PhoneMotionControl<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">string</span> ServerIPAddress
        <span style="color: #000000;">{</span>
            get
            <span style="color: #000000;">{</span>
                <span style="color: #0600ff;">return</span> _ipAddress<span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
            set
            <span style="color: #000000;">{</span>
                _ipAddress <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">int</span> Port
        <span style="color: #000000;">{</span>
            get
            <span style="color: #000000;">{</span>
                <span style="color: #0600ff;">return</span> _port<span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
            set
            <span style="color: #000000;">{</span>
                _port <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> PhoneMotion Motion
        <span style="color: #000000;">{</span>
            get
            <span style="color: #000000;">{</span>
                <span style="color: #0600ff;">return</span> GetMotion<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> PhoneListener<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">         <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">bool</span> Start<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>_clientThread <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span> <span style="color: #008000;">&amp;&amp;</span> _motion.<span style="color: #0000ff;">bStop</span> <span style="color: #008000;">!=</span> <span style="color: #0600ff;">false</span><span style="color: #000000;">)</span>
                <span style="color: #0600ff;">return</span> true<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            _motion <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PhoneMotionControl<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            _clientThread <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Thread<span style="color: #000000;">(</span><span style="color: #008000;">new</span> ParameterizedThreadStart<span style="color: #000000;">(</span>PhoneThread<span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            _clientThread.<span style="color: #0000ff;">Start</span><span style="color: #000000;">(</span>_motion<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #ff0000;">string</span>.<span style="color: #0000ff;">IsNullOrEmpty</span><span style="color: #000000;">(</span>_ipAddress<span style="color: #000000;">)</span><span style="color: #000000;">)</span>
                Thread.<span style="color: #0000ff;">Sleep</span><span style="color: #000000;">(</span><span style="color: #ff0000;">100</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">             <span style="color: #0600ff;">return</span> true<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">bool</span> Start<span style="color: #000000;">(</span><span style="color: #ff0000;">string</span> ipaddress, <span style="color: #ff0000;">int</span> portnumber<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            ServerIPAddress <span style="color: #008000;">=</span> ipaddress<span style="color: #008000;">;</span>
            Port <span style="color: #008000;">=</span> portnumber<span style="color: #008000;">;</span>&nbsp;&nbsp; <br />            <span style="color: #0600ff;">return</span> Start<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> <span style="color: #0600ff;">void</span> Stop<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            _motion.<span style="color: #0000ff;">bStop</span> <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
            _clientThread <span style="color: #008000;">=</span> null<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">         <span style="color: #0600ff;">public</span> PhoneMotion GetMotion<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            PhoneMotion m <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PhoneMotion<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #0600ff;">lock</span><span style="color: #000000;">(</span>_motion<span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                m.<span style="color: #0000ff;">X</span> <span style="color: #008000;">=</span> _motion.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">X</span><span style="color: #008000;">;</span>
                m.<span style="color: #0000ff;">Y</span> <span style="color: #008000;">=</span> _motion.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Y</span><span style="color: #008000;">;</span>
                m.<span style="color: #0000ff;">Z</span> <span style="color: #008000;">=</span> _motion.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Z</span><span style="color: #008000;">;</span>
                m.<span style="color: #0000ff;">lastUpdateTime</span> <span style="color: #008000;">=</span> _motion.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">lastUpdateTime</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>&nbsp;&nbsp; <span style="color: #0600ff;">return</span> m<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> PhoneThread<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> obj<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            PhoneMotionControl m <span style="color: #008000;">=</span> <span style="color: #000000;">(</span>PhoneMotionControl<span style="color: #000000;">)</span>obj<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            IPAddress localAddress <span style="color: #008000;">=</span> IPAddress.<span style="color: #0000ff;">Loopback</span><span style="color: #008000;">;</span>
            </pre>
<pre style="font-family: monospace;" class="csharp">             <span style="color: #0600ff;">foreach</span><span style="color: #000000;">(</span>IPAddress ip <span style="color: #0600ff;">in</span> Dns.<span style="color: #0000ff;">GetHostAddresses</span><span style="color: #000000;">(</span>Dns.<span style="color: #0000ff;">GetHostName</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                <span style="color: #0600ff;">if</span><span style="color: #000000;">(</span>ip.<span style="color: #0000ff;">AddressFamily</span> <span style="color: #008000;">==</span> AddressFamily.<span style="color: #0000ff;">InterNetwork</span><span style="color: #000000;">)</span>
                <span style="color: #000000;">{</span>
                    localAddress <span style="color: #008000;">=</span> ip<span style="color: #008000;">;</span>
                    break<span style="color: #008000;">;</span>
                <span style="color: #000000;">}</span>
            <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            _ipAddress <span style="color: #008000;">=</span> localAddress.<span style="color: #0000ff;">ToString</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">            <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                TcpClient client <span style="color: #008000;">=</span> newsock.<span style="color: #0000ff;">AcceptTcpClient</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>client <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span>
                <span style="color: #000000;">{</span>
                    <span style="color: #0600ff;">using</span> <span style="color: #000000;">(</span>NetworkStream stream <span style="color: #008000;">=</span> client.<span style="color: #0000ff;">GetStream</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>
                    <span style="color: #000000;">{</span>
                        <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
                        <span style="color: #000000;">{</span>
                            <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> values <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #008000;">sizeof</span><span style="color: #000000;">(</span><span style="color: #ff0000;">double</span><span style="color: #000000;">)</span> <span style="color: #008000;">+</span> <span style="color: #ff0000;">1</span><span style="color: #000000;">]</span><span style="color: #008000;">;</span>
                            <span style="color: #ff0000;">int</span> recv <span style="color: #008000;">=</span> stream.<span style="color: #0000ff;">Read</span><span style="color: #000000;">(</span>values, <span style="color: #ff0000;">0</span>, values.<span style="color: #0000ff;">Length</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>recv <span style="color: #008000;">==</span> values.<span style="color: #0000ff;">Length</span><span style="color: #000000;">)</span>
                            <span style="color: #000000;">{</span>
                                <span style="color: #0600ff;">lock</span> <span style="color: #000000;">(</span>m.<span style="color: #0000ff;">motion</span><span style="color: #000000;">)</span>
                                <span style="color: #000000;">{</span>
                                    <span style="color: #0600ff;">switch</span> <span style="color: #000000;">(</span>values<span style="color: #000000;">[</span><span style="color: #ff0000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">)</span>
                                    <span style="color: #000000;">{</span>
                                        <span style="color: #0600ff;">case</span> <span style="color: #ff0000;">0</span><span style="color: #008000;">:</span>
                                            m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">X</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>values, <span style="color: #ff0000;">1</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                                            break<span style="color: #008000;">;</span>
                                        <span style="color: #0600ff;">case</span> <span style="color: #ff0000;">1</span><span style="color: #008000;">:</span>
                                            m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Y</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>values, <span style="color: #ff0000;">1</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                                            break<span style="color: #008000;">;</span>
                                        <span style="color: #0600ff;">case</span> <span style="color: #ff0000;">2</span><span style="color: #008000;">:</span>
                                            m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Z</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>values, <span style="color: #ff0000;">1</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                                            break<span style="color: #008000;">;</span>
                                        <span style="color: #0600ff;">default</span><span style="color: #008000;">:</span>
                                            break<span style="color: #008000;">;</span>
                                    <span style="color: #000000;">}</span>
                                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">lastUpdateTime</span> <span style="color: #008000;">=</span> DateTime.<span style="color: #0000ff;">Now</span><span style="color: #008000;">;</span>
                                <span style="color: #000000;">}</span>
                            <span style="color: #000000;">}</span>
                        <span style="color: #000000;">}</span>
                    <span style="color: #000000;">}</span>
                <span style="color: #000000;">}</span>
            <span style="color: #000000;">}</span>&nbsp;&nbsp; newsock.<span style="color: #0000ff;">Stop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; <br />     <span style="color: #000000;">}</span>
<span style="color: #000000;">}</span>&nbsp; </pre>
<p>Фактически нам необходимо модифицировать только метод PhoneThread, оставив весь остальной код таким же, как и при работе с TCP. Для преемственнсти, сохраним формат передающегося сообщения с маркерами-байтами, хотя в случае с UDP сообщение должно прийти сразу всё. Кроме этого, UDP &ndash; протокол не требует соединения, однако, мультикаст соединения мы слушаем по локальному порту. Поэтому, необходимо создать UDP клиента, который привязан к локальному IP и порту, далее присоединиться к мультикаст гурппе и слушать групповые сообщения. В виде кода, это будет выглядеть следующим образом:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> PhoneThread<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> obj<span style="color: #000000;">)</span>
<span style="color: #000000;">{</span>
    PhoneMotionControl m <span style="color: #008000;">=</span> <span style="color: #000000;">(</span>PhoneMotionControl<span style="color: #000000;">)</span>obj<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    IPAddress localAddress <span style="color: #008000;">=</span> IPAddress.<span style="color: #0000ff;">Loopback</span><span style="color: #008000;">;</span>
    <span style="color: #0600ff;">foreach</span><span style="color: #000000;">(</span>IPAddress ip <span style="color: #0600ff;">in</span> Dns.<span style="color: #0000ff;">GetHostAddresses</span><span style="color: #000000;">(</span>Dns.<span style="color: #0000ff;">GetHostName</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span>
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">if</span><span style="color: #000000;">(</span>ip.<span style="color: #0000ff;">AddressFamily</span> <span style="color: #008000;">==</span> AddressFamily.<span style="color: #0000ff;">InterNetwork</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            localAddress <span style="color: #008000;">=</span> ip<span style="color: #008000;">;</span>
            break<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>
    <span style="color: #000000;">}</span>&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    IPEndPoint localIP <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> IPEndPoint<span style="color: #000000;">(</span>localAddress, _port<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    UdpClient listener <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> UdpClient<span style="color: #000000;">(</span>localIP<span style="color: #000000;">)</span><span style="color: #008000;">;</span>
    listener.<span style="color: #0000ff;">JoinMulticastGroup</span><span style="color: #000000;">(</span>IPAddress.<span style="color: #0000ff;">Parse</span><span style="color: #000000;">(</span><span style="color: #666666;">"224.7.9.1"</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    IPEndPoint groupEP <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> IPEndPoint<span style="color: #000000;">(</span>IPAddress.<span style="color: #0000ff;">Any</span>, _port<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    _ipAddress <span style="color: #008000;">=</span> localAddress.<span style="color: #0000ff;">ToString</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">    <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
    <span style="color: #000000;">{</span>&nbsp;&nbsp; <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>listener <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>&nbsp;&nbsp; <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytes <span style="color: #008000;">=</span> listener.<span style="color: #0000ff;">Receive</span><span style="color: #000000;">(</span><span style="color: #0600ff;">ref</span> groupEP<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                <span style="color: #0600ff;">lock</span> <span style="color: #000000;">(</span>m.<span style="color: #0000ff;">motion</span><span style="color: #000000;">)</span>
                <span style="color: #000000;">{</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">X</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">1</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Y</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">10</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Z</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">19</span><span style="color: #000000;">)</span><span style="color: #008000;">;<br /></span>                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">lastUpdateTime</span> <span style="color: #008000;">=</span> DateTime.<span style="color: #0000ff;">Now</span><span style="color: #008000;">;</span>
                <span style="color: #000000;">}</span>
             <span style="color: #000000;">}</span>&nbsp;&nbsp; <br />         <span style="color: #000000;">}</span>
    <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #000000;">}</span></pre>
<p>Обратите внимание, что в данном коде кроется потенциальная проблема. На строчке</p>
<p><span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytes <span style="color: #008000;">=</span> listener.<span style="color: #0000ff;">Receive</span><span style="color: #000000;">(</span><span style="color: #0600ff;">ref</span> groupEP<span style="color: #000000;">)</span><span style="color: #008000;">;</span></p>
<p>произойдёт блокировка потока PhoneThread и даже, если мы захотим его остановить, пока не прийдёт следующее сообщение, поток остановлен не будет. Также мы предполагаем, что мы всегда получаем полноее сообщение такого же формат, как использовалось в TCP примере. Также обратите внимание, что адрес мультикаст группы просто записан в коде. Это сделано для удобства представление его в формате блога, чтобы было удобнее копировать.</p>
<p>Также как и в примере с TCP соединением удобно будет добавить событие, оповещающее об изменении данных. Код будет немного отличаться, так как мы здесь получаем сразу все данные. Добавим в в пространсово имён следующий код:</p>
<pre style="font-family: monospace;" class="csharp">   <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">delegate</span> <span style="color: #0600ff;">void</span> PhoneMotionEventHandler<span style="color: #000000;">(</span>
      <span style="color: #ff0000;">Object</span> sender,
      PhoneMotionChangedEventArgs e<span style="color: #000000;">)</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">    <span style="color: #0600ff;">public</span> <span style="color: #ff0000;">class</span> PhoneMotionChangedEventArgs
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">private</span> PhoneMotion _pm<span style="color: #008000;">;</span>
  </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">public</span> PhoneMotionChangedEventArgs<span style="color: #000000;">(</span>PhoneMotion pm<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            _pm <span style="color: #008000;">=</span> pm<span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;"> public</span> PhoneMotion Motion
        <span style="color: #000000;">{</span>
            get <span style="color: #000000;">{</span> <span style="color: #0600ff;">return</span> _pm<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
        <span style="color: #000000;">}<br /></span>    <span style="color: #000000;">}</span>   </pre>
<p>В сам класс добавим необходимые определения:</p>
<pre style="font-family: monospace;" class="csharp"> <span style="color: #0600ff;">public</span> <span style="color: #0600ff;">event</span> PhoneMotionEventHandler PhoneMotionChanged<span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp"> <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> NotifyPhoneMotionChanged<span style="color: #000000;">(</span>PhoneMotion pm<span style="color: #000000;">)</span>
 <span style="color: #000000;">{</span>
    <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>PhoneMotionChanged <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span>
    <span style="color: #000000;">{</span>
        PhoneMotionChanged<span style="color: #000000;">(</span><span style="color: #0600ff;">this</span>, <span style="color: #008000;">new</span> PhoneMotionChangedEventArgs<span style="color: #000000;">(</span>pm<span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">}</span>
 <span style="color: #000000;">}</span></pre>
<pre style="font-family: monospace;" class="csharp">И генерацию самого события в код PhoneThread:</pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">. . . .</span></pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;"> while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
    <span style="color: #000000;">{</span>   <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>listener <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>   <span style="color: #0600ff;">while</span> <span style="color: #000000;">(</span><span style="color: #008000;">!</span>m.<span style="color: #0000ff;">bStop</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytes <span style="color: #008000;">=</span> listener.<span style="color: #0000ff;">Receive</span><span style="color: #000000;">(</span><span style="color: #0600ff;">ref</span> groupEP<span style="color: #000000;">)</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">                <span style="color: #0600ff;">lock</span> <span style="color: #000000;">(</span>m.<span style="color: #0000ff;">motion</span><span style="color: #000000;">)</span>
                <span style="color: #000000;">{</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">X</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">1</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Y</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">10</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">Z</span> <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">ToDouble</span><span style="color: #000000;">(</span>bytes, <span style="color: #ff0000;">19</span><span style="color: #000000;">)</span><span style="color: #008000;">;<br /></span>                    m.<span style="color: #0000ff;">motion</span>.<span style="color: #0000ff;">lastUpdateTime</span> <span style="color: #008000;">=</span> DateTime.<span style="color: #0000ff;">Now</span><span style="color: #008000;">;</span></pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #008000;"></span>                    NotifyPhoneMotionChanged<span style="color: #000000;">(</span>GetMotion<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span> 
                <span style="color: #000000;">}</span>
             <span style="color: #000000;">}</span>   <br />         <span style="color: #000000;">}</span>
    <span style="color: #000000;">}<span style="color: #333333;" color="#333333"><br />. . . . </span></span></pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #000000;"></span></pre>
<p>Теперь можно добавить инициализацию UDP сервера и обработку события в код приложения:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.Windows.Forms</span><span style="color: #008000;">;</span>
<span style="color: #0600ff;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>   <br /><span style="color: #0600ff;">using</span> <span style="color: #008080;">PowerPoint </span><span style="color: #008000;">=</span> Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Interop</span>.<span style="color: #0000ff;">PowerPoint</span><span style="color: #008000;">;</span>     <br /><br /></pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">namespace</span> PowerPointController
<span style="color: #000000;">{</span>
    <span style="color: #0600ff;">public</span> <span style="color: #0600ff;">partial</span> <span style="color: #ff0000;">class</span> Main <span style="color: #008000;">:</span> Form
    <span style="color: #000000;">{</span>
        <span style="color: #0600ff;">private</span> <span style="color: #ff0000;">string</span> _pptFileName <span style="color: #008000;">=</span> <span style="color: #666666;">""</span><span style="color: #008000;">;</span>
        PowerPoint.<span style="color: #0000ff;">Presentation</span> presesntation<span style="color: #008000;">;</span>
        PhoneListener pl<span style="color: #008000;">;</span>
        <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">double</span> PI3 <span style="color: #008000;">=</span> Math.<span style="color: #0000ff;">PI</span><span style="color: #008000;">/</span><span style="color: #ff0000;">3</span><span style="color: #008000;">;</span>
        DateTime timeToContinue<span style="color: #008000;">;</span>
        <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">double</span> SwitchDelay <span style="color: #008000;">=</span> <span style="color: #ff0000;">3</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;"> public</span> Main<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            InitializeComponent<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> SelectPPT_Click<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, EventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            OpenFileDialog ofd <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> OpenFileDialog<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>ofd.<span style="color: #0000ff;">ShowDialog</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">==</span>DialogResult.<span style="color: #0000ff;">OK</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                _pptFileName <span style="color: #008000;">=</span> ofd.<span style="color: #0000ff;">FileName</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">                pl <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PhoneListener<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                pl.<span style="color: #0000ff;">Start</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span>
        <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> RunPPT_Click<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, EventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>File.<span style="color: #0000ff;">Exists</span><span style="color: #000000;">(</span>_pptFileName<span style="color: #000000;">)</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>   PowerPoint.<span style="color: #0000ff;">Application</span> application <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PowerPoint.<span style="color: #0000ff;">Application</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                presesntation <span style="color: #008000;">=</span> application.<span style="color: #0000ff;">Presentations</span>.<span style="color: #0000ff;">Open</span><span style="color: #000000;">(</span>_pptFileName, Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Core</span>.<span style="color: #0000ff;">MsoTriState</span>.<span style="color: #0000ff;">msoTrue</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">                PowerPoint.<span style="color: #0000ff;">SlideShowSettings</span> sst <span style="color: #008000;">=</span> presesntation.<span style="color: #0000ff;">SlideShowSettings</span><span style="color: #008000;">;</span>
                sst.<span style="color: #0000ff;">ShowType</span> <span style="color: #008000;">=</span> Microsoft.<span style="color: #0000ff;">Office</span>.<span style="color: #0000ff;">Interop</span>.<span style="color: #0000ff;">PowerPoint</span>.<span style="color: #0000ff;">PpSlideShowType</span>.<span style="color: #0000ff;">ppShowTypeSpeaker</span><span style="color: #008000;">;</span>
                sst.<span style="color: #0000ff;">Run</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">                pl.<span style="color: #0000ff;">PhoneMotionChanged</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">new</span> PhoneMotionEventHandler<span style="color: #000000;">(</span>pl_PhoneMotionChanged<span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                timeToContinue <span style="color: #008000;">=</span> DateTime.<span style="color: #0000ff;">Now</span><span style="color: #008000;">;</span>   </pre>
<pre style="font-family: monospace;" class="csharp">             <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">         <span style="color: #000000;">}</span>   </pre>
<pre style="font-family: monospace;" class="csharp">         <span style="color: #0600ff;">void</span> pl_PhoneMotionChanged<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, PhoneMotionChangedEventArgs e<span style="color: #000000;">)</span>
         <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span><span style="color: #000000;">(</span>e.<span style="color: #0000ff;">Motion</span> <span style="color: #008000;">!=</span> <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span> <span style="color: #008000;">&amp;&amp;</span> 
               <span style="color: #000000;">(</span>DateTime.<span style="color: #0000ff;">Now</span> <span style="color: #008000;">&gt;</span> timeToContinue<span style="color: #000000;">)</span><span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>e.<span style="color: #0000ff;">Motion</span>.<span style="color: #0000ff;">X</span> <span style="color: #008000;">&gt;</span> PI3<span style="color: #000000;">)</span>
                <span style="color: #000000;">{</span>
                    timeToContinue <span style="color: #008000;">=</span> timeToContinue.<span style="color: #0000ff;">AddSeconds</span><span style="color: #000000;">(</span>SwitchDelay<span style="color: #000000;">)</span><span style="color: #008000;">;</span>    
                    presesntation.<span style="color: #0000ff;">SlideShowWindow</span>.<span style="color: #0000ff;">View</span>.<span style="color: #0000ff;">Next</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                <span style="color: #000000;">}</span>
                <span style="color: #0600ff;">else</span>
                    <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>e.<span style="color: #0000ff;">Motion</span>.<span style="color: #0000ff;">X</span> <span style="color: #008000;">&lt;</span> <span style="color: #008000;">-</span>PI3<span style="color: #000000;">)</span>
                    <span style="color: #000000;">{</span>
                        timeToContinue <span style="color: #008000;">=</span> timeToContinue.<span style="color: #0000ff;">AddSeconds</span><span style="color: #000000;">(</span>SwitchDelay<span style="color: #000000;">)</span><span style="color: #008000;">;</span>    
                        presesntation.<span style="color: #0000ff;">SlideShowWindow</span>.<span style="color: #0000ff;">View</span>.<span style="color: #0000ff;">Previous</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                    <span style="color: #000000;">}</span>
            <span style="color: #000000;">}</span>
           <span style="color: #000000;">}</span>     </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #000000;">}</span>
<span style="color: #000000;"> }<br /><br /></span></pre>
<p>Обратите внимание на то, что мы вынуждены приотанавливать обработку событий изменения поворота, чтобы переключать можно было традиционными &ldquo;покачиваниями&rdquo; телефона, иначе, у нас быстро презентация переключится до конца. Срабатывание происходит, когда по данным с телефона угло больше PI/3, т.е. 60 градусов.</p>
<p>У нас полностью готова серверная часть. Теперь осталось только передать нужные данные с телефона.</p>
<p>Воспользуемся шаблоном Windows Phone Application и создадим простое приложение:, кнопка &ldquo;Присоединиться&rdquo; и три labels для отображения углов поворота:</p>
<pre style="font-family: monospace;" class="xml"><span style="font-style: italic; color: #808080;">&lt;!--TitlePanel contains the name of the application and page title--&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StackPanel</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">"TitlePanel"</span> <span style="color: #000066;">Grid.Row</span>=<span style="color: #ff0000;">"0"</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">"12,17,0,28"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">"ApplicationTitle"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">"ПРЕЗЕНТЕР"</span> <br /> <span style="color: #000066;">Style</span>=<span style="color: #ff0000;">"{StaticResource PhoneTextNormalStyle}"</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">"PageTitle"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">"настройка"</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">"9,-7,0,0"</span> <br /> <span style="color: #000066;">Style</span>=<span style="color: #ff0000;">"{StaticResource PhoneTextTitle1Style}"</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StackPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="xml"><span style="font-style: italic; color: #808080;">&lt;!--ContentPanel - place additional content here--&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Grid</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">"ContentPanel"</span> <span style="color: #000066;">Grid.Row</span>=<span style="color: #ff0000;">"1"</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">"12,0,12,0"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StackPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Button</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">"btnConnect"</span> <span style="color: #000066;">Content</span>=<span style="color: #ff0000;">"Присоединиться"</span> <span style="color: #000066;">Click</span>=<span style="color: #ff0000;">"btnConnect_Click"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StackPanel</span> <span style="color: #000066;">Orientation</span>=<span style="color: #ff0000;">"Vertical"</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">"24,48,0,0"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">"tbX"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">"X: "</span> <span style="color: #000066;">FontSize</span>=<span style="color: #ff0000;">"40"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">"tbY"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">"Y: "</span> <span style="color: #000066;">FontSize</span>=<span style="color: #ff0000;">"40"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">"tbZ"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">"Z: "</span> <span style="color: #000066;">FontSize</span>=<span style="color: #ff0000;">"40"</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">"tbErr"</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">" "</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">"92"</span> <span style="color: #000066;">TextWrapping</span>=<span style="color: #ff0000;">"Wrap"</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StackPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StackPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
<p>Добавим код, для присоедениения к мультикаст группе и рассылке сообщений о изменении положения телефона:</p>
<pre style="font-family: monospace;" class="csharp"><span style="color: #0600ff;">public</span> <span style="color: #0600ff;">partial</span> <span style="color: #ff0000;">class</span> MainPage <span style="color: #008000;">:</span> PhoneApplicationPage
    <span style="color: #000000;">{</span>
        Motion m <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Motion<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; <span style="color: #ff0000;">double</span> X, Y, Z<span style="color: #008000;">;</span>
        <span style="color: #ff0000;">double</span> PX, PY, PZ<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">double</span> rtog <span style="color: #008000;">=</span> <span style="color: #ff0000;">180</span> <span style="color: #008000;">/</span> Math.<span style="color: #0000ff;">PI</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">string</span> GROUP_ADDRESS <span style="color: #008000;">=</span> <span style="color: #666666;">"224.7.9.1"</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">const</span> <span style="color: #ff0000;">int</span> GROUP_PORT <span style="color: #008000;">=</span> <span style="color: #ff0000;">9978</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        UdpAnySourceMulticastClient _client <span style="color: #008000;">=</span> null<span style="color: #008000;">;</span>&nbsp;&nbsp;</pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #ff0000;">bool</span> _joined <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">       </pre>
<pre style="font-family: monospace;" class="csharp">       <span style="font-style: italic; color: #008080;">// Constructor</span>
        <span style="color: #0600ff;">public</span> MainPage<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            InitializeComponent<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>            
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> PhoneApplicationPage_Loaded<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, RoutedEventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            m.<span style="color: #0000ff;">CurrentValueChanged</span> <span style="color: #008000;">+=</span> <span style="color: #008000;">new</span> EventHandler<span style="color: #008000;">&lt;</span>SensorReadingEventArgs<span style="color: #008000;">&lt;</span>MotionReading<span style="color: #008000;">&gt;&gt;</span><span style="color: #000000;">(</span>m_CurrentValueChanged<span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            m.<span style="color: #0000ff;">Start</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">void</span> m_CurrentValueChanged<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, SensorReadingEventArgs<span style="color: #008000;">&lt;</span>MotionReading<span style="color: #008000;">&gt;</span> e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            X <span style="color: #008000;">=</span> e.<span style="color: #0000ff;">SensorReading</span>.<span style="color: #0000ff;">Attitude</span>.<span style="color: #0000ff;">Pitch</span><span style="color: #008000;">;</span>
            Y <span style="color: #008000;">=</span> e.<span style="color: #0000ff;">SensorReading</span>.<span style="color: #0000ff;">Attitude</span>.<span style="color: #0000ff;">Roll</span><span style="color: #008000;">;</span>
            Z <span style="color: #008000;">=</span> e.<span style="color: #0000ff;">SensorReading</span>.<span style="color: #0000ff;">Attitude</span>.<span style="color: #0000ff;">Yaw</span><span style="color: #008000;">;</span>&nbsp;&nbsp; Dispatcher.<span style="color: #0000ff;">BeginInvoke</span><span style="color: #000000;">(</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #008000;">=&gt;</span>
            <span style="color: #000000;">{</span>
                tbX.<span style="color: #0000ff;">Text</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">string</span>.<span style="color: #0000ff;">Format</span><span style="color: #000000;">(</span><span style="color: #666666;">"X: {0}"</span>, <span style="color: #000000;">(</span><span style="color: #ff0000;">int</span><span style="color: #000000;">)</span><span style="color: #000000;">(</span>X <span style="color: #008000;">*</span> rtog<span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                tbY.<span style="color: #0000ff;">Text</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">string</span>.<span style="color: #0000ff;">Format</span><span style="color: #000000;">(</span><span style="color: #666666;">"Y: {0}"</span>, <span style="color: #000000;">(</span><span style="color: #ff0000;">int</span><span style="color: #000000;">)</span><span style="color: #000000;">(</span>Y <span style="color: #008000;">*</span> rtog<span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                tbZ.<span style="color: #0000ff;">Text</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">string</span>.<span style="color: #0000ff;">Format</span><span style="color: #000000;">(</span><span style="color: #666666;">"Z: {0}"</span>, <span style="color: #000000;">(</span><span style="color: #ff0000;">int</span><span style="color: #000000;">)</span><span style="color: #000000;">(</span>Z <span style="color: #008000;">*</span> rtog<span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; PX <span style="color: #008000;">=</span> X<span style="color: #008000;">;</span>
                PY <span style="color: #008000;">=</span> Y<span style="color: #008000;">;</span>
                PZ <span style="color: #008000;">=</span> Z<span style="color: #008000;">;</span>
                SendUpdate<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">}</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> Join<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            _client <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> UdpAnySourceMulticastClient<span style="color: #000000;">(</span>IPAddress.<span style="color: #0000ff;">Parse</span><span style="color: #000000;">(</span>GROUP_ADDRESS<span style="color: #000000;">)</span>, GROUP_PORT<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; _client.<span style="color: #0000ff;">BeginJoinGroup</span><span style="color: #000000;">(</span>
                result <span style="color: #008000;">=&gt;</span>
                <span style="color: #000000;">{</span>
                    _client.<span style="color: #0000ff;">EndJoinGroup</span><span style="color: #000000;">(</span>result<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                    </pre>
<pre style="font-family: monospace;" class="csharp">                    _client.<span style="color: #0000ff;">MulticastLoopback</span> <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                    </pre>
<pre style="font-family: monospace;" class="csharp">                    _joined <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                 <span style="color: #000000;">}</span>, <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span>&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">        </pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> SendUpdate<span style="color: #000000;">(</span><span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            <span style="color: #0600ff;">if</span> <span style="color: #000000;">(</span>_joined<span style="color: #000000;">)</span>
            <span style="color: #000000;">{</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> b0 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #ff0000;">1</span><span style="color: #000000;">]</span><span style="color: #008000;">;</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> buffer <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #ff0000;">1</span><span style="color: #000000;">]</span><span style="color: #008000;">;</span>&nbsp;&nbsp; <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytesX <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">GetBytes</span><span style="color: #000000;">(</span>X<span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytesY <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">GetBytes</span><span style="color: #000000;">(</span>Y<span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                <span style="color: #ff0000;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">]</span> bytesZ <span style="color: #008000;">=</span> BitConverter.<span style="color: #0000ff;">GetBytes</span><span style="color: #000000;">(</span>Z<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; b0<span style="color: #000000;">[</span><span style="color: #ff0000;">0</span><span style="color: #000000;">]</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">0</span><span style="color: #008000;">;</span>
                buffer <span style="color: #008000;">=</span> b0.<span style="color: #0000ff;">Concat</span><span style="color: #000000;">(</span>bytesX<span style="color: #000000;">)</span>.<span style="color: #0000ff;">ToArray</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                b0<span style="color: #000000;">[</span><span style="color: #ff0000;">0</span><span style="color: #000000;">]</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">1</span><span style="color: #008000;">;</span>
                buffer <span style="color: #008000;">=</span> buffer.<span style="color: #0000ff;">Concat</span><span style="color: #000000;">(</span>b0<span style="color: #000000;">)</span>.<span style="color: #0000ff;">ToArray</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                buffer <span style="color: #008000;">=</span> buffer.<span style="color: #0000ff;">Concat</span><span style="color: #000000;">(</span>bytesY<span style="color: #000000;">)</span>.<span style="color: #0000ff;">ToArray</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                b0<span style="color: #000000;">[</span><span style="color: #ff0000;">0</span><span style="color: #000000;">]</span> <span style="color: #008000;">=</span> <span style="color: #ff0000;">2</span><span style="color: #008000;">;</span>
                buffer <span style="color: #008000;">=</span> buffer.<span style="color: #0000ff;">Concat</span><span style="color: #000000;">(</span>b0<span style="color: #000000;">)</span>.<span style="color: #0000ff;">ToArray</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
                buffer <span style="color: #008000;">=</span> buffer.<span style="color: #0000ff;">Concat</span><span style="color: #000000;">(</span>bytesZ<span style="color: #000000;">)</span>.<span style="color: #0000ff;">ToArray</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; <br />                <br />                _client.<span style="color: #0000ff;">BeginSendToGroup</span><span style="color: #000000;">(</span>buffer, <span style="color: #ff0000;">0</span>, buffer.<span style="color: #0000ff;">Length</span>,
                    result <span style="color: #008000;">=&gt;</span>
                    <span style="color: #000000;">{</span>
                        _client.<span style="color: #0000ff;">EndSendToGroup</span><span style="color: #000000;">(</span>result<span style="color: #000000;">)</span><span style="color: #008000;">;</span>&nbsp;&nbsp; </pre>
<pre style="font-family: monospace;" class="csharp">                    <span style="color: #000000;">}</span>, <span style="color: #0600ff;">null</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
             <span style="color: #000000;">}</span>&nbsp;&nbsp; <br />        <span style="color: #000000;">}</span></pre>
<pre style="font-family: monospace;" class="csharp"><span style="color: #000000;"> </span></pre>
<pre style="font-family: monospace;" class="csharp">        <span style="color: #0600ff;">private</span> <span style="color: #0600ff;">void</span> btnConnect_Click<span style="color: #000000;">(</span><span style="color: #ff0000;">object</span> sender, RoutedEventArgs e<span style="color: #000000;">)</span>
        <span style="color: #000000;">{</span>
            Join<span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">}</span></pre>
<p>Как видно, код для UDP гораздо проще. Нам не обязательно соединятся с конкретным хостом (при этом нам не гарантирована доставка), также, поскольку нам нет необходимости читать сообщения из группы, мы не реализуем получение сообщений и отключаем получение своих собтсвенных сообщений:</p>
<p>_client.<span style="color: #0000ff;">MulticastLoopback</span> <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span></p>
<p>Фактически код состоит из 2-х частей. Первая, это работа с Motion API по получению данных о положении устройства. Мы создаём объет Motion и подписываемся на изменения положения устройства (CurrentValueChanged) и все изменния послаем по сети серверу (метод SendUpdate). Чтобы данные начали пересылаться, необходимо сначала присоединиться к мультикаст группе (метод Join).</p>
<p>Для работы с мультикаст группами создаётся объект типа UdpAnySourceMulticastClient , которому указывается адрес группы и порт.</p>
<p>Чтобы переслать данные на сервер, формируется уже знакомый нам буфер с данными, размеченый байтами-маркерами и вызвается асинхронный метод передачи данных BeginSendToGroup.</p>
<p>Обратите внимание, что и в примере сервера UDP порт 9978 указан прямо в коде, если вас по каким-то причинам не устраивает этот порт - выделите его в качтсве параметра. Весь нефункциональный код обработки ошибок и проблемных кейсов (например, сервер просто не получает сообщение, а мы об этом даже не знаем) отсутсвует в примере. Для использования в реальных условиях код необходимо соответсвующим образом дополнить.</p>]]></content:encoded>
    </item>
    <item>
      <title>Записи онлайн занятий школы Windows Phone</title>
      <link>https://docs.microsoft.com/archive/blogs/stasus/windows-phone</link>
      <pubDate>Tue, 10 Jan 2012 03:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Pavlov Stas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stasus/2012/01/10/windows-phone/</guid>
      <description><![CDATA[Завершился онлайновый цикл "Вечерней школы Windows Phone"
Записи прошедших встреч доступны для...]]></description>
      <content:encoded><![CDATA[<p>Завершился онлайновый цикл <a href="http://msdn.microsoft.com/ru-ru/windowsphone/hh544009">"Вечерней школы Windows Phone"</a></p>
<p>Записи прошедших встреч доступны для загрузки по ссылкам:</p>
<ul>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032500840&amp;Culture=ru-RU">Вечерняя школа Windows Phone, Занятие 1, 8 декабря 2011, 10:00</a></li>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032500910&amp;Culture=ru-RU">Вечерняя школа Windows Phone. Занятие 1, 8 декабря 2011, 17:00</a></li>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032500912&amp;Culture=ru-RU">Вечерняя школа Windows Phone. Занятие 2, 15 декабря 2011, 10:00</a></li>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032500889&amp;Culture=ru-RU">Вечерняя школа Windows Phone. Занятие 2, 15 декабря 2011, 17.00</a></li>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=ru-RU&amp;EventID=1032500915&amp;CountryCode=RU">Вечерняя школа Windows Phone, Занятие 3, 22 декабря 2011, 10:00</a></li>
<li><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=ru-RU&amp;EventID=1032500909&amp;CountryCode=RU">Вечерняя школа Windows Phone, Занятие 3, 22 декабря 2011, 17:00</a></li>
</ul>
<p>Большинстов примероы и презентации можно скачать на SkyDrive по ссылке: <a href="https://aka.ms/ruwp7dev">aka.ms/ruwp7dev</a></p>
<p>Если вам необходим пример, который не доступен для закачки, напишите мне <a title="@stasus" href="https://twitter.com/stasus">@stasus</a></p>
<p>Выгруженные записи встреч в виде видео и LiveMeeting формате доступны на SkyDrive по ссылке: <a href="https://aka.ms/wpschoolvideo">aka.ms/wpschoolvideo</a></p>
<p><br /><b>Полезные ссылки:</b></p>
<ul>
<li><a href="http://habrahabr.ru/blogs/windows_mobile/134658/">Live Tiles и фоновые агенты</a></li>
<li><a href="http://habrahabr.ru/blogs/windows_mobile/134239/">Карты и геолокационные данные</a></li>
<li><a href="http://habrahabr.ru/blogs/windows_mobile/134835/">Пара слов о Motion API</a></li>
<li><a href="http://habrahabr.ru/blogs/windows_mobile/134929/">Делаем свой RSS Reader c WebClient и WebBrowser</a></li>
<li><a href="http://msdn.microsoft.com/ru-ru/windowsphone">Центр разработки Windows Phone на MSDN (курс по Windows Phone)</a></li>
<li><a href="http://www.microsoft.com/downloads/ru-ru/details.aspx?familyid=0a373422-6680-46a7-89e1-e9a468a14259&amp;displaylang=ru">Windows Phone SDK 7.1</a></li>
</ul>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>