编写多线程程序,实现输入两个数字X、Y,同时启动4个线程,分别计算加减乘除。并将结果显示出来,如图所示
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace EX01_Calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
double x, y;
private void button1_Click(object sender, EventArgs e)
{
//异常处理
try
{
x = double.Parse(txtX.Text);
y = double.Parse(txtY.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
//定义线程
Thread[] thread = new Thread[4];
thread[0] = new Thread(new ThreadStart(NumAddition));
thread[1] = new Thread(new ThreadStart(NumSubstruction));
thread[2] = new Thread(new ThreadStart(NumMultiplication));
thread[3] = new Thread(new ThreadStart(NumDivision));
//开启线程
thread[0].Start();
thread[1].Start();
thread[2].Start();
thread[3].Start();
}
//加法运算
void NumAddition()
{
double num = x + y;
txtAddition.Text = num.ToString();
}
//减法运算
void NumSubstruction()
{
double num = x - y;
txtSubstruction.Text = num.ToString();
}
//乘法运算
void NumMultiplication()
{
double num = x * y;
txtMultiplication.Text = num.ToString();
}
//除法运算
void NumDivision()
{
double num = x / y;
txtDivision.Text = num.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
//不可编辑控件
txtAddition.Enabled = false;
txtDivision.Enabled = false;
txtMultiplication.Enabled = false;
txtSubstruction.Enabled = false;
//线程间操作无效: 从不是创建控件“txtSubstruction”的线程访问它。解决方法
Form1.CheckForIllegalCrossThreadCalls = false;
}
}
}