- •Лабораторная работа № 1. Введение в многопоточность. Многопоточность в c# .Net.
- •Базовые методы работы с потоками в c# .Net.
- •Лабораторная работа № 2. Разработка простого многопоточного компонента с помощью Visual c#
- •Чтобы создать форму, выполните следующие действия.
- •Чтобы создать компонент "Калькулятор", выполните следующие действия.
- •Чтобы добавить в компонент "Калькулятор" общие переменные, выполните следующие действия.
- •Чтобы добавить в компонент "Калькулятор" методы и события, выполните следующие действия.
- •Чтобы реализовать в форме "frmCalculations" интерфейс пользователя, выполните следующие действия.
- •Чтобы проверить проект, выполните следующие действия.
- •Чтобы добавить подпрограмму "Threads", выполните следующие действия.
- •Чтобы добавить соответствующий код в форму "frmCalculations", выполните следующие действия.
- •Чтобы создать процедуры для вызова элементов управления, выполните следующие действия.
- •Чтобы добавить оператор "lock" в приложение, выполните следующие действия.
Чтобы реализовать в форме "frmCalculations" интерфейс пользователя, выполните следующие действия.
Откройте форму
frmCalculations
в Редакторе кода.Найдите оператор
public partial class frmCalculations
. Непосредственно после знака{
введите:
Calculator Calculator1;
Найдите конструктор. Непосредственно перед знаком
}
добавьте следующую строку.
// Creates a new instance of Calculator.
Calculator1 = new Calculator();
В окне конструктора нажмите поочередно каждую кнопку, чтобы создать структуру кода для обработчика события Click для этой кнопки и добавить код обработчика.
В результате обработчики событий Click должны выглядеть следующим образом.
// Passes the value typed in the txtValue to Calculator.varFact1.
private void btnFactorial1_Click(object sender, System.EventArgs e)
{
Calculator1.varFact1 = int.Parse(txtValue.Text);
// Disables the btnFactorial1 until this calculation is complete.
btnFactorial1.Enabled = false;
Calculator1.Factorial();
}
private void btnFactorial2_Click(object sender, System.EventArgs e)
{
Calculator1.varFact2 = int.Parse(txtValue.Text);
btnFactorial2.Enabled = false;
Calculator1.FactorialMinusOne();
}
private void btnAddTwo_Click(object sender, System.EventArgs e)
{
Calculator1.varAddTwo = int.Parse(txtValue.Text);
btnAddTwo.Enabled = false;
Calculator1.AddTwo();
}
private void btnRunLoops_Click(object sender, System.EventArgs e)
{
Calculator1.varLoopValue = int.Parse(txtValue.Text);
btnRunLoops.Enabled = false;
// Lets the user know that a loop is running
lblRunLoops.Text = "Looping";
Calculator1.RunALoop();
}
После кода, добавленного на предыдущем шаге, введите указанный ниже код для обработки событий, которые форма будет получать из компонента
Calculator1
.
private void FactorialHandler(double Value, double Calculations)
// Displays the returned value in the appropriate label.
{
lblFactorial1.Text = Value.ToString();
// Re-enables the button so it can be used again.
btnFactorial1.Enabled = true;
// Updates the label that displays the total calculations performed
lblTotalCalculations.Text = "TotalCalculations are " +
Calculations.ToString();
}
private void FactorialMinusHandler(double Value, double Calculations)
{
lblFactorial2.Text = Value.ToString();
btnFactorial2.Enabled = true;
lblTotalCalculations.Text = "TotalCalculations are " +
Calculations.ToString();
}
private void AddTwoHandler(int Value, double Calculations)
{
lblAddTwo.Text = Value.ToString();
btnAddTwo.Enabled = true;
lblTotalCalculations.Text = "TotalCalculations are " +
Calculations.ToString();
}
private void LoopDoneHandler(double Calculations, int Count)
{
btnRunLoops.Enabled = true;
lblRunLoops.Text = Count.ToString();
lblTotalCalculations.Text = "TotalCalculations are " +
Calculations.ToString();
}
В окне конструктора формы
frmCalculations
непосредственно перед знаком}
добавьте следующий код для обработки пользовательских событий, которые форма будет получать из компонентаCalculator1
.
Calculator1.FactorialComplete += new
Calculator.FactorialCompleteHandler(this.FactorialHandler);
Calculator1.FactorialMinusOneComplete += new
Calculator.FactorialCompleteHandler(this.FactorialMinusHandler);
Calculator1.AddTwoComplete += new
Calculator.AddTwoCompleteHandler(this.AddTwoHandler);
Calculator1.LoopComplete += new
Calculator.LoopCompleteHandler(this.LoopDoneHandler);
Проверка работы приложения
На этом этапе создан проект, который содержит форму и компонент, предназначенный для выполнения некоторых сложных вычислений. Несмотря на то что многопоточность еще не реализована, сейчас следует проверить работоспособность проекта.