- •Лабораторная работа № 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 |
|
|
|
Прибавить два |
|
|
|
Выполнить цикл |
|
|
|
(пусто) |
