Рекомендации по использованию пула потоков
В этом разделе описаны рекомендации по работе с пулом потоков.
Do's
Используйте пул потоков для параллельной работы в приложении.
Используйте рабочие элементы для выполнения расширенных задач без блокировки потока пользовательского интерфейса.
Создайте рабочие элементы, которые являются короткими и независимыми. Рабочие элементы выполняются асинхронно, и их можно отправлять в пул в любом порядке из очереди.
Отправка обновлений в поток пользовательского интерфейса с помощью Windows.UI.Core.CoreDispatcher.
Используйте ThreadPoolTimer.CreateTimer вместо функции спящего режима.
Вместо создания собственной системы управления потоками используйте пул потоков. Пул потоков выполняется на уровне ОС с расширенными возможностями и оптимизирован для динамического масштабирования в соответствии с ресурсами устройства и действиями в процессе и в системе.
В C++убедитесь, что делегаты рабочих элементов используют модель гибкого потока (делегаты C++ по умолчанию являются гибкими).
Используйте предварительно выделенные рабочие элементы, если невозможно терпеть сбой выделения ресурсов во время использования.
Не давайте
Не создавайте периодические таймеры со значением <периода 1 миллисекунда (включая 0). Это приведет к тому, что рабочий элемент будет вести себя как одноразовой таймер.
Не отправляйте периодические рабочие элементы, которые занимают больше времени, чем время, указанное в параметре периода .
Не пытайтесь отправлять обновления пользовательского интерфейса (кроме всплываемых и уведомлений) из рабочего элемента, отправленного из фоновой задачи. Вместо этого используйте обработчики выполнения фоновой задачи и завершения, например IBackgroundTaskInstance.Progress.
При использовании обработчиков рабочих элементов, использующих асинхронное ключевое слово, не предполагается, что весь код в обработчике выполняется при установке полного состояния рабочего элемента. Рабочий элемент пула потоков может быть установлен в полное состояние перед выполнением всего кода в обработчике. Код после ключевого слова await в обработчике может выполняться после того, как рабочий элемент был установлен на полное состояние.
Не пытайтесь запускать предварительно выделенный рабочий элемент более одного раза без повторной инициализации. Создание периодического рабочего элемента