读书人

黑马软件工程师:多线程学习代码

发布时间: 2013-10-16 11:29:46 作者: rapoo

黑马程序员:多线程学习代码

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -----------------------

黑马软件工程师:多线程学习代码

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Threading;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            TextBox.CheckForIllegalCrossThreadCalls = false;        }        //单线程循环        private void button1_Click(object sender, EventArgs e)        {            CountTime();        }        /// <summary>        /// 循环技术方法        /// </summary>        void CountTime()        {            DateTime beginTime = DateTime.Now;            for (int i = 0; i < 999999; i++)            {            }            TimeSpan ts = beginTime.Subtract(DateTime.Now);            MessageBox.Show("循环结束" + ts.TotalMilliseconds);        }        //多线程循环 解决UI卡死问题        private void button2_Click(object sender, EventArgs e)        {            //创建线程对象 传入要线程执行的方法            Thread threadFrist = new Thread(CountTime);            //将线程设置为后台线程(当所有线程结束后,后台线程会自动退出)            threadFrist.IsBackground = true;            //启动多线程            threadFrist.Start();        }        /// <summary>        /// 修改文本框里面的内容        /// </summary>        void ChangTxt()        {            for (int i = 0; i < 999; i++)            {                int a = int.Parse(txtNum.Text);                Console.WriteLine(Thread.CurrentThread.Name + ",a=" + a+",i="+i.ToString());                a++;                txtNum.Text = a.ToString();            }        }        //方法重入问题        private void button3_Click(object sender, EventArgs e)        {            //ChangTxt();//UI线程自己自己访问可以通过                        Thread thread = new Thread(ChangTxt);            thread.Name = "t1";            thread.IsBackground = true;            thread.Start();            Thread thread2 = new Thread(ChangTxt);            thread2.Name = "t2";            thread2.IsBackground = true;            thread2.Start();                       }        void ShowTxtName(object name)        {            if (name != null)                MessageBox.Show("name" + name.ToString());            else                MessageBox.Show("null");            MessageBox.Show("name="+name.ToString());        }        void ShowTxtName2(object name)        {            if (name != null)                MessageBox.Show("name" + name.ToString());            else                MessageBox.Show("null");            MessageBox.Show("name=" + name.ToString());        }        //多线程执行带参数方法        private void button4_Click(object sender, EventArgs e)        {            //ParameterizedThreadStart pts = new ParameterizedThreadStart(ShowTxtName);            //执行带参数的方法            Thread thread = new Thread(ShowTxtName);            thread.IsBackground = true;            thread.Start(txtName.Text);        }        //===执行不带参数==        public class MyThread        {            ThreadStart ts;            public MyThread(ThreadStart ts)//要求用户在new的时候传入方法委托            {                this.ts = ts;//将委托赋给全局变量            }            public void Start()            {                if (ts != null)                    ts();//调用委托,执行委托里的犯法                else                    pts(null);            }            //===执行带参数===            ParameterizedThreadStart pts;            public MyThread(ParameterizedThreadStart pts)//要求用于在new的时候传入方法委托            {                this.pts = pts;//将委托赋给全局变量            }            public void start()            {                ts();//调用委托,执行委托里的方法            }        }        private void button5_Click(object sender, EventArgs e)        {        }                    }}


--------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.nSet

读书人网 >编程

热点推荐