博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Winform多线程
阅读量:4069 次
发布时间:2019-05-25

本文共 1783 字,大约阅读时间需要 5 分钟。

一、创建线程

1、使用Tread类

ThreadStart threadStart = new ThreadStart(Func);            Thread thread = new Thread(threadStart);            thread.Start();            public void Func()            {                ...            }

2、使用Delegate.BeginInvoke

delegate double CalculateMethod(double Diameter); //申明一个委托,表明需要在子线程上执行的方法的函数签名            static CalculateMethod calcMethod = new CalculateMethod(Calculate);//把委托和具体的方法关联起来            static void Main(string[] args)            {            //此处开始异步执行,并且可以给出一个回调函数(如果不需要执行什么后续操作也可以不使用回调)            calcMethod.BeginInvoke(5, new AsyncCallback(TaskFinished), null);            Console.ReadLine();            }            //线程调用的函数,给出直径作为参数,计算周长            public static double Calculate(double Diameter)            {                return Diameter * Math.PI;            }            //线程完成之后回调的函数            public static void TaskFinished(IAsyncResult result)            {                double re = 0;                re = calcMethod.EndInvoke(result);                Console.WriteLine(re);            }

3、使用ThreadPool.QueueworkItem

WaitCallback w = new WaitCallback(Calculate);            //下面启动四个线程,计算四个直径下的圆周长            ThreadPool.QueueUserWorkItem(w, 1.0);            ThreadPool.QueueUserWorkItem(w, 2.0);            ThreadPool.QueueUserWorkItem(w, 3.0);            ThreadPool.QueueUserWorkItem(w, 4.0);            public static void Calculate(double Diameter)            {            	return Diameter * Math.PI;            }

二、受托管的线程和windows线程

执行.net程序实际上也是windows线程。当线程被CLR(common language runtime)所知时,就成为受托管的线程。具体来说就是由受托管的代码创建的线程就是受托管的线程。非托管线程执行了受托管的代码就变成了受托管的线程。
受托管的线程与非托管线程的区别在于
:CLR将创建一个System.Threading.Thread类的实力来代表并操作前者,在内部实现中,CLR将一个包含了所有受托管线程的列表保存在ThreadStore的地方。
从安全角度来看,一个受托管的线程的组用户与底层的非托管线程中的windows组用户是无关的。

三、前台线程和后台线程

转载地址:http://bfrji.baihongyu.com/

你可能感兴趣的文章
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
《软件过程管理》 第八章 软件过程集成管理
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>
《软件体系结构》 练习题
查看>>
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>
SQL语句(六) 自主存取控制
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
堆排序完整版,含注释
查看>>
二叉树深度优先遍历和广度优先遍历
查看>>
生产者消费者模型,循环队列实现
查看>>
PostgreSQL代码分析,查询优化部分,process_duplicate_ors
查看>>
PostgreSQL代码分析,查询优化部分,canonicalize_qual
查看>>
PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
查看>>