Поделиться через


Работа с потоками в платформе .NET Compact Framework

Обновлен: Ноябрь 2007

.NET Compact Framework поддерживает базовую работу с потоками, но не поддерживает следующие возможности полной версии .NET Framework:

  • Доступ к сжатому стеку в текущем потоке.

  • Управляемое представление структуры Win32 OVERLAPPED.

  • Классы, которые управляют контекстом выполнения.

  • Использование семафоров.

  • Атрибуты состояния потока.

  • Большинство операций с дескрипторами, кроме получения дескрипторов.

.NET Compact Framework поддерживает использование делегата ThreadStart с методом Thread.Start и поддерживает использование TimerCallback с Timer.

Можно указать параметры тайм-аута при помощи использования потоковых методов:

Изменения в пулах потоков

В .NET Compact Framework, версия 1.0, максимальное количество потоков по умолчанию в пуле равно 256 потокам с размером стека 64 КБ. В .NET Compact Framework, версия 2.0 и более поздних версиях, этот предел был уменьшен до 25 потоков с размером стека 128 КБ, что больше соответствовало возможностям полной версии .NET Framework.

Запрос HTTP окончится ошибкой и вызовет исключение, если в пуле нет доступных потоков. Основные исключения представлены в следующей таблице.

Исключение

Условие

OutOfMemoryException

Невозможно поместить в очередь запрос пользователя.

WebException

Недостаточно потоков в пуле для выполнения операции.

Можно избежать завершения потоков, уменьшив количество одновременных веб-запросов, или увеличив максимально допустимое количество потоков в пуле. .NET Compact Framework 2.0 поддерживает метод SetMaxThreads. Укажите параметры так, как описано в следующей таблице.

Параметр

Описание

workerThreads

Максимальное количество рабочих потоков в пуле потоков. Это может быть любое значение.

completionPortThreads

Максимальное количество асинхронных потоков в пуле потоков. .NET Compact Framework в текущий момент игнорирует это значение, но его следует установить между 1 и 1,000. Для будущих применений, рекомендуется установить 500, так как это значение по умолчанию для полной версии .NET Framework.

Для устройств, выполняющих .NET Compact Framework 1.0., можно уменьшить максимальное количество допустимых потоков в пуле, изменив настройки реестра. Установите параметр MaxThreads в ключе CFROOT\ThreadPool равным желаемому значению. Заметьте, что этот ключ реестра не используется более поздними версиями .NET Compact Framework.

См. также

Ссылки

System.Threading

Другие ресурсы

Разработка приложений в .NET Compact Framework