Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 1 и 2 на С#.docx
Скачиваний:
167
Добавлен:
11.04.2015
Размер:
253.02 Кб
Скачать

Лабораторная работа № 2. Разработка простого многопоточного компонента с помощью Visual c#

  • Visual Studio 2008

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

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

Создание проекта

Приложение будет состоять из одной формы и компонента. Пользователь будет вводить значения и сообщать компоненту о необходимости начать вычисления. Форма будет получать из компонента значения и отображать их в элементах управления "Label". Компонент будет выполнять вычисления, занимающие процессор, и сообщать форме о завершении. Для хранения значений, полученных из интерфейса пользователя, в компоненте следует создать общие переменные. В компоненте следует также реализовать методы для выполнения вычислений на основе значений этих переменных.

Примечание

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

Чтобы создать форму, выполните следующие действия.

  1. Создайте новый проект Приложение Windows.

  2. Задайте для приложения имя Calculations и переименуйте форму Form1.cs в frmCalculations.cs. Получив приглашение от Visual Studio переименовать элемент кода Form1, нажмите кнопку Да.

Эта форма будет служить в приложении основным интерфейсом пользователя.

  1. Добавьте в форму пять элементов управления Label, четыре элемента управления Button и один элемент управления TextBox.

  2. Задайте свойства для этих элементов следующим образом.

элементом управления

Name

Text

label1

lblFactorial1

(пусто)

label2

lblFactorial2

(пусто)

label3

lblAddTwo

(пусто)

label4

lblRunLoops

(пусто)

label5

lblTotalCalculations

(пусто)

button1

btnFactorial1

Факториал

button2

btnFactorial2

Факториал - 1

button3

btnAddTwo

Прибавить два

button4

btnRunLoops

Выполнить цикл

textBox1

txtValue

(пусто)