C# 多线程 简单使用方法以及常用参数
2015-05-20 11:03
656 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Threading; //线程操作的类在这个命名空间下. namespace C02多线程 { public partial class Form1 : Form { public Form1() { InitializeComponent(); //关闭控件的跨线程访问检查 TextBox.CheckForIllegalCrossThreadCalls = false; } private void button1_Click(object sender, EventArgs e) { int sum = 0; for (int i = 0; i < 999999999; i++) { sum += i; } MessageBox.Show("ok"); } private void button2_Click(object sender, EventArgs e) { //创建1个线程对象 并为这个线程对象指定要执行的方法. Thread thread = new Thread(TestThread); //设置线程为后台线程. thread.IsBackground = true; //开启线程 thread.Start(); //线程默认情况下都是前台线程. //要所有的前台线程退出以后 程序才会退出. //后台线程 只要所有的前台线程结束 后台线程就会立即结束. //进程里默认的线程我们叫做主线程或者叫做UI线程. //线程什么时候结束 该线程执行的方法执行完以后 线程就自动退出. //多个线程访问同一资源 可能造成不同步的情况. 这个叫做 线程重入. //th.Abort(); 强行停止线程. //Thread.Sleep(1000);//将当前线程暂停 单位毫秒 //Thread.CurrentThread;得到当前线程的引用 //线程调用带参数的方法 //创建1个ParameterizedThreadStart委托对象.为这个委托对象绑定方法. //将委托对象通过构造函数传入线程对象 //启动线程的时候调用Start()的重载 将参数传入. } //准备让线程去调用. private void TestThread() { int sum = 0; for (int i = 0; i < 999999999; i++) { sum += i; } MessageBox.Show("ok"); } private void CountNunm() { //使用lock加锁 请联想你上厕所的情况 lock (this) { for (int i = 0; i < 10000; i++) { int num = int.Parse(textBox1.Text.Trim()); num++; //Thread.Sleep(500);//将当前线程暂停 // Thread.CurrentThread.Abort(); //Thread th = Thread.CurrentThread; //th.Abort(); //if (num == 5000) //{ // th.Abort(); //} textBox1.Text = num.ToString(); } } } Thread th; private void button3_Click(object sender, EventArgs e) { th = new Thread(CountNunm); th.Name = "哈哈线程"; th.IsBackground = true; th.Start(); //Thread th1 = new Thread(CountNunm); //th1.IsBackground = true; //th1.Start(); } private void button4_Click(object sender, EventArgs e) { //ThreadStart s = new ThreadStart(CountNunm); //Thread th = new Thread(CountNunm); ParameterizedThreadStart s = new ParameterizedThreadStart(TestThreadParsms); Thread t = new Thread(s); t.IsBackground = true; t.Start("你好啊"); } private void TestThreadParsms(object obj) { Console.WriteLine(obj.ToString()); } } }
相关文章推荐
- C# Windows Api的一些方法 封装 以及 常用参数
- C# Windows Api的一些方法 封装 以及 常用参数
- C# Windows Api的一些方法 封装 以及 常用参数 .
- .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法
- .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法
- C# 使用多线程如何传递两个以上参数的实现方法(附示例) 推荐
- C# Windows Api的一些方法 封装 以及 常用参数
- EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
- 【C#】深度理解虚方法 继承 以及接口的简单使用
- Unity C# 使用反射,利用字符串作为泛型参数调用泛型方法。
- 【原】matlab与调用lingo/lindo api的方法以及简单的使用
- ExtJs window 使用API以及window常用属性和方法
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
- 关于多线程常用方法以及对锁的控制(详解)
- C#中WerServer接口参数规范、访问地址的简单阐述,以及出现的问题
- MyBatis_Generator插件的安装以及简单使用方法(图解)
- C# 字符串String的常用使用方法
- redis的常用命令以及队列的简单使用
- body中常用的属性以及a链接颜色的使用方法
- C#中 什么是接口Interface,以及如何简单使用