Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описаны рекомендуемые методы работы с пулом потоков.
Что нужно делать
Используйте пул потоков для параллельной работы в приложении.
Используйте рабочие элементы для выполнения расширенных задач без блокировки потока пользовательского интерфейса.
Создайте недолговечные и независимые рабочие элементы. Рабочие элементы выполняются асинхронно, и их можно помещать в пул из очереди в любом порядке.
Отправляйте обновления в поток пользовательского интерфейса. В приложениях WinUI 3 используйте
DispatcherQueue.TryEnqueueизMicrosoft.UI.Dispatching.DispatcherQueue.Используйте ThreadPoolTimer.CreateTimer вместо функции спящего режима .
Вместо создания собственной системы управления потоками используйте пул потоков. Пул потоков работает на уровне ОС, обладает расширенными возможностями и оптимизирован для динамического масштабирования в соответствии с ресурсами устройства и активностью внутри процесса и в системе в целом.
В C++убедитесь, что делегаты рабочих элементов используют модель гибкого потока (делегаты C++ по умолчанию являются гибкими).
Используйте предварительно выделенные рабочие элементы, если невозможно терпеть сбой выделения ресурсов во время использования.
Чего не следует делать
Не создавайте периодические таймеры со значением < 1 миллисекунда (включая 0). Это приведет к тому, что рабочий элемент будет работать как одноразовый таймер.
Не отправляйте периодические рабочие элементы, которые занимают больше времени, чем время, указанное в параметре периода .
Не пытайтесь отправлять обновления пользовательского интерфейса (кроме всплываемых и уведомлений) из рабочего элемента, отправленного из фоновой задачи. Вместо этого используйте обработчики выполнения фоновой задачи и завершения, например IBackgroundTaskInstance.Progress.
При использовании обработчиков рабочих элементов, использующих асинхронное ключевое слово, не предполагается, что весь код в обработчике выполняется при установке полного состояния рабочего элемента. Рабочий элемент пула потоков может быть переведён в состояние завершения до того, как весь код в обработчике будет выполнен. Код после ключевого слова await в обработчике может выполняться после того, как рабочий элемент был установлен на полное состояние.
Не пытайтесь запускать предварительно выделенный рабочий элемент более одного раза без повторной инициализации. Создание периодического рабочего элемента
Связанные темы
Windows developer