黑马笔记-多线程代码

来源:互联网 发布:理财软件对比分析 编辑:程序博客网 时间:2024/04/30 13:25
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;namespace 多线程聊天室{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            TextBox.CheckForIllegalCrossThreadCalls = false;        }        /// <summary>        /// 单线的形式。        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnSingleThread_Click(object sender, EventArgs e)        {            //for (int i = 0; i <= 9999999; i++)            //{            //    textBox1.Text = i.ToString();            //}            CountTime();        }        /// <summary>        /// 数数。        /// </summary>        public void CountTime()        {            for (int i = 0; i <= 999999999; i++)            {                //textBox1.Text = i.ToString();            }            MessageBox.Show("数数完毕!");        }        /// <summary>        /// 利用多线程的方法解决UI卡死。        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnMulThread_Click(object sender, EventArgs e)        {            ///创建线程对象 传入要线程执行的方法.            Thread threadFirt = new Thread(this.CountTime);            //将线程设置为后台线程。(当所有的前台线程结束,后台线程会自动退出. )            threadFirt.IsBackground = true;            ///启动线程            threadFirt.Start();        }        /// <summary>        /// 文本重写。        /// </summary>        public void ChangText()        {            for (int i = 0; i < 99999; i++)            {                int a = int.Parse(textBox1.Text);                a++;                textBox1.Text = a.ToString();            }        }        private void button1_Click(object sender, EventArgs e)        {            ///创建线程对象 传入要线程执行的方法.            Thread threadFirt = new Thread(this.ChangText);            //threadFirt.Name = t1;            //将线程设置为后台线程。(当所有的前台线程结束,后台线程会自动退出. )            threadFirt.IsBackground = true;            ///启动线程            threadFirt.Start();            ///创建线程对象 传入要线程执行的方法.            Thread threadFirt2 = new Thread(this.ChangText);            //threadFirt2.Name = t2;            //将线程设置为后台线程。(当所有的前台线程结束,后台线程会自动退出. )            threadFirt2.IsBackground = true;            ///启动线程            threadFirt2.Start();        }        private void btnThreadWithPa_Click(object sender, EventArgs e)        {            //ParameterizedThreadStart myParameThreadStart = new ParameterizedThreadStart(ShowTxtName);            Thread thread = new Thread(ShowTxtName);            thread.IsBackground = true;            thread.Start(txtName.Text);        }        /// <summary>        /// 多线程一个参数的方法        /// </summary>        /// <param name="name"></param>        void ShowTxtName(object name)        {            if (name != null)            {                MessageBox.Show("name=" + name.ToString());            }            else            {                MessageBox.Show("aa ");            }        }        /// <summary>        /// 多线程多参数的方法        /// </summary>        /// <param name="name"></param>        void ShowTxtName2(object li)        {               List<string> list=li as List<string>;             if(list!=null)             {                 foreach (string s in list)                 {                     MessageBox.Show(s);                 }             }                    }        private void btnThreadWithmanyPa_Click(object sender, EventArgs e)        {            Thread thread = new Thread(ShowTxtName2);            thread.IsBackground = true;            thread.Start(new List<string>() { "刘德华","王力宏","孙燕姿"});        }    }    class MyThread    {        ThreadStart ts;        ParameterizedThreadStart pts;        public MyThread(ThreadStart ts)        {            this.ts = ts;        }        public MyThread(ParameterizedThreadStart pts)        {            this.pts = pts;        }        public void Start()                {            if (ts != null)            {                this.ts();            }            else            {                this.pts(null);            }        }        public void Start(object o)        {            this.pts(o);        }    }}

原创粉丝点击