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


Многопоточность в компонентах

Компонент BackgroundWorker реализует некоторые функциональные возможности работы с потоками в пространстве имен System.Threading; использование компонента BackgroundWorker является простейшим способом реализации многопоточности. Дополнительные сведения см. в разделе Общие сведения о компоненте BackgroundWorker.

Многопоточность, или свободное создание потоков, — это способность приложения одновременно выполнять несколько потоков операций. Примером многопоточного приложения может служить программа, которая в одном потоке получает входные данные от пользователя, во втором — выполняет сложные вычисления, а в третьем — обновляет базу данных. В однопотоковом приложении пользователь может потратить некоторое время на ожидание завершения вычислений или обновления базы данных. В многопоточном приложении эти процессы могут выполняться в фоновом режиме, поэтому время не теряется.

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

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

В .NET Framework предлагается несколько возможностей для реализации многопоточности в компонентах. Одной из таких возможностей является применение функциональных возможностей пространства имен System.Threading. Другая возможность — это использование асинхронной модели на основе событий. Компонент BackgroundWorker представляет собой реализацию асинхронной модели; он предоставляет пользователю инкапсулированные в компоненте расширенные возможности, которые обеспечивают простоту использования.

В этом подразделе

Ссылка

  • Класс BackgroundWorker
    Позволяет выполнять операцию в отдельном выделенном потоке.

  • Thread
    Сведения о синтаксисе и членах класса из справочника .NET Framework.

Связанные подразделы

Topic Location
Пример работы с потоками Образцы приложений на C#

См. также

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

Создание компонентов

Шаблоны разработки для асинхронного программирования