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# 多线程 容易使用方法以及常用参数
热度:18 发布时间:2016-05-05 03:44:34.0
相关解决方案
- Radmin Viewer 3.0 使用方法,该如何处理
- Golbal.asax 使用方法,该怎么解决
- VS2008 Team 使用方法,该如何处理
- 求救google adsense 使用方法-马上结账(顶者有分)解决方案
- JS:attachEvent跟addEventListener 使用方法
- JS登记事件 JS:attachEvent和addEventListener 使用方法
- JSON - JAVA 使用方法
- javascript attachEvent跟addEventListener 使用方法
- Eclipse的装配方法,汉化方法,使用方法
- oracle 11g express 使用方法,该怎么解决
- ★帮忙下载java运行环境,使用方法,该怎么解决
- qr code 使用方法。请,并提供操作事例
- android 的listview 使用方法。调整了checkbox
- vue,element-ui中的上传upload组件,使用方法,使用详解
- 360虚拟定位 使用方法
- 文献管理软件EndNote X9使用教程、使用方法
- dayjs()使用方法
- lombok介绍、使用方法、总结
- 免费CDN:jsDelivr+Github 使用方法
- request.getScheme() 使用方法
- 传参格式 qs.stringify()使用方法
- 【Normalize.css】介绍,作用,使用方法
- easyUI datagrid 使用方法
- IDEA Eval Reset 使用方法
- (ROS的启动文件 launch 使用方法)
- numpy中transpose()使用方法
- 【webshell箱子】webshell箱子 搭建过程,使用方法,附带所需的下载链接
- 【隐写工具】【试一试?】jphide seek(JPHS) 使用方法,检测提示,附下载地址
- go mod 使用方法
- Elasticsearch 随机查询(抽样查询)PHP 使用方法