Doug BollingDoug Bolling, инженер специализирующийся на разработке для Windows Embedded CE и Windows Mobile, написавший книгу «Programming Windows Embedded CE» (сейчас в 4-ой редакции), посмотрел эмулятор Windows Phone 7 и нашел возможность обойти стандартное ограничение на многозадачность в новой ОС.

Он пишет в блоге:
«Это не место для трактатов о многопотоковых управляемых (managed-код) приложениях. Но кратко, очень кратко, программы для Windows Phone могут быть многопотоковыми. Основной поток программы вызывает соответствующие методы чтобы создать основное окно приложения и «поток для пользовательского интерфейса». Остальные потоки созданные приложением не могут напрямую взаимодействовать с пользовательским интерфейсом. Эти потоки называются «рабочие потоки» или «фоновые потоки».


Если приложение отправляется в фоновый режим, основной поток приостановлен. Однако, все запущенные рабочие потоки у приостановленного приложения продолжают выполняться. Эти рабочие потоки могут вызывать методы библиотеки основных классов, такие, как запросы к файловой системе, чтение и запись файлов и подобные, даже если приложение приостановлено.

Когда рабочий процесс пытается вызвать метод основного потока, запрос помещается в очередь, но не выполняется. Когда приложение будет восстановлено, поставленные в очередь запросы выполнятся.
Конечно, «приостановленные» приложения живут в неспокойное время, если системе потребуется память, используемая данными приложениями, то оно будет завершено. В этот момент произойдет событие Application_Exit (иногда не срабатывает).

Пока эти потоки не имеют доступа к пользовательскому интерфейсу, они могут получить доступ к внешним ресурсам, например завершить скачивание, пока вы работаете в другом приложении, что особенно полезно.»

Ссылка на блог Doug Bolling

Система Orphus