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


Пример использования многопотоковости

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

Это решение демонстрирует использование нескольких потоков для достижения параллелизма в задачах.

Получение примеров и инструкций по их установке

  • Выполните одно или несколько из следующих действий:

    • В меню Справка выберите пункт Примеры.

      Отобразится информация о примерах, содержащаяся в файле сведений о продукте.

    • Посетите веб-узел примеров Visual Studio 2008 Здесь содержатся самые последние версии примеров.

    • Найдите примеры на компьютере, где установлена среда Visual Studio. По умолчанию примеры и файл сведений о продукте устанавливаются в папку диск:\Program Files\Microsoft Visual Studio 9.0\Samples\lcid. Для выпусков Express продукта Visual Studio все примеры располагаются в Интернете.

Дополнительные сведения см. в разделе Поиск файлов примеров.

9szee8tb.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот пример кода иллюстрирует концепцию и содержит только код, относящийся к этой концепции. Он может не отвечать требованиям безопасности для конкретных условий, и его не следует использовать в точности в том виде, в каком он приведен. Чтобы проект был безопасным и надежным, рекомендуется добавить код обеспечения безопасности и код обработки ошибок. Корпорация Майкрософт предоставляет этот пример кода на условиях “как есть”, без каких-либо гарантий.

Для запуска этого примера

  • Нажмите клавишу F5.

Демонстрации

В этом примере по нажатию кнопки в отдельном потоке запускается задача, занимающая много времени:

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

  • Запустить в потоке из рабочего пула Задача использует метод BeginInvoke, создаваемый компилятором для всех делегатов для запуска задания.

  • Фоновый рабочий поток Эта задача использует метод Компонент BackgroundWorker для создания нового потока.

Этот пример не включает синхронизацию, поскольку потоки не получают доступ к каким-либо данным.

См. также

Основные понятия

Общие сведения об асинхронном программировании

Ссылки

Оператор Delegate

DebuggerStepThroughAttribute

AppDomain.GetCurrentThreadId

Thread

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

Асинхронное программирование с использованием делегатов