• WinForms多线程编程之多线程计算器 TC


    编写多线程程序,实现输入两个数字XY,同时启动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;
            }
        }
    }

    作者:Mr S.R Lee
    出处:http://www.cnblogs.com/LeeYongze
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

  • 相关阅读:
    Google API 详解
    Why should I use SASS?
    Google Maps and ASP.NET
    IP摄像机
    解决母版页报错“内容控件必须是内容页中的顶级控件,或是引用母版页的嵌套母版页。”
    sass服务
    C#中操作符的重载(Time类)
    第一次面试
    单链表(C++)
    指针和引用的区别(C++)
  • 原文地址:https://www.cnblogs.com/LeeYongze/p/1600103.html
Copyright © 2020-2023  润新知