黑马笔记-多线程代码
来源:互联网 发布:理财软件对比分析 编辑:程序博客网 时间: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); } }}