- •Лабораторная работа № 1. Введение в многопоточность. Многопоточность в c# .Net.
- •Базовые методы работы с потоками в c# .Net.
- •Лабораторная работа № 2. Разработка простого многопоточного компонента с помощью Visual c#
- •Чтобы создать форму, выполните следующие действия.
- •Чтобы создать компонент "Калькулятор", выполните следующие действия.
- •Чтобы добавить в компонент "Калькулятор" общие переменные, выполните следующие действия.
- •Чтобы добавить в компонент "Калькулятор" методы и события, выполните следующие действия.
- •Чтобы реализовать в форме "frmCalculations" интерфейс пользователя, выполните следующие действия.
- •Чтобы проверить проект, выполните следующие действия.
- •Чтобы добавить подпрограмму "Threads", выполните следующие действия.
- •Чтобы добавить соответствующий код в форму "frmCalculations", выполните следующие действия.
- •Чтобы создать процедуры для вызова элементов управления, выполните следующие действия.
- •Чтобы добавить оператор "lock" в приложение, выполните следующие действия.
Лабораторная работа № 2. Разработка простого многопоточного компонента с помощью Visual c#
Visual Studio 2008
Компонент BackgroundWorker заменяет аналогичный код из пространства имен System.Threading и расширяет его функциональные возможности; однако при необходимости исходное пространство имен System.Threading можно сохранить для обеспечения обратной совместимости и использования в будущем.
Примером компонента, в котором можно использовать многопоточность, служит компонент, производящий расчет заработной платы. Этот компонент может в одном потоке обрабатывать данные, введенные пользователем в базу данных, в то время как в другом потоке будут выполняться вычисления, потребляющие значительные ресурсы процессора. При запуске этих действий в отдельных потоках пользователю не нужно ждать, пока компьютер закончит вычисления, чтобы ввести следующие данные. В данном пошаговом руководстве создается простой многопоточный компонент, который выполняет одновременно несколько сложных вычислений.
Создание проекта
Приложение будет состоять из одной формы и компонента. Пользователь будет вводить значения и сообщать компоненту о необходимости начать вычисления. Форма будет получать из компонента значения и отображать их в элементах управления "Label". Компонент будет выполнять вычисления, занимающие процессор, и сообщать форме о завершении. Для хранения значений, полученных из интерфейса пользователя, в компоненте следует создать общие переменные. В компоненте следует также реализовать методы для выполнения вычислений на основе значений этих переменных.
Примечание |
Несмотря на то что в качестве метода, вычисляющего значение, обычно используется функция, аргументы между потоками передаваться не могут и значения не возвращаются. Существует множество простых способов передачи значений потокам и получения значений из них. В этом примере значения будут возвращаться в интерфейс пользователя путем обновления общих переменных, а для уведомления основной программы о завершении выполнения потока будут использоваться события.
|
Чтобы создать форму, выполните следующие действия.
Создайте новый проект Приложение Windows.
Задайте для приложения имя
Calculations
и переименуйте формуForm1.cs
вfrmCalculations.cs
. Получив приглашение от Visual Studio переименовать элемент кодаForm1
, нажмите кнопку Да.
Эта форма будет служить в приложении основным интерфейсом пользователя.
Добавьте в форму пять элементов управления Label, четыре элемента управления Button и один элемент управления TextBox.
Задайте свойства для этих элементов следующим образом.
элементом управления |
Name |
Text |
|
|
(пусто) |
|
|
(пусто) |
|
|
(пусто) |
|
|
(пусто) |
|
|
(пусто) |
|
|
Факториал |
|
|
Факториал - 1 |
|
|
Прибавить два |
|
|
Выполнить цикл |
|
|
(пусто) |