.NET 进程和线程
一、进程:
需要有用Process类
用法一:Process.Start("calc");
该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误
用法二:
//实例化进程类
Process p = new Process();
//创建进程开启路径对象
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
//进程类开启路径指向
p.StartInfo = psi;
//启动进程,不是立刻开启,什么时候开启时由CPU决定
p.Start();
二、线程:
一个程序至少有一个进程,一个进程至少有一个线程,线程不能孤立执行。进程相当于公司,主线程就是老板,老板只能同时干一件活,其它的或就交给员工,员工就是线程。
程序为什么会假死?因为主线程被占用了
线程去执行一段需要时间的代码,主线程不会被占用,程序就不会出现假死状态了
步骤完善过程:
(1)//创建线程类,并使用委托,指定这个线程要执行的是哪个函数
Thread th = new Thread(aaa);
//开启线程执行功能,也不是立刻执行
th.Start();
(2)但是这样写线程可以开启多次,最终会造成电脑CPU使用率过高,因此需要限制住,在线程Start方法中添加一个是object类型的参数,而且方法中只能有一个参数;但是程序默认不允许跨线程访问对象,这时需要关闭监控,即在构造函数中,实例化方法下面加上这句话:
Control.CheckForIllegalCrossThreadCalls = false;
(3)当主窗体已经关闭,但是线程如果还未执行完工作内容,那么会默默的继续执行,直到执行完毕后才会将整个进程关闭
程序默认所有的线程都为:前台线程
解决办法:将新开的线程变为后台线程
th.IsBackground = true;
总结:
线程所在的命名空间:System.Threading;
线程类:Thread th = new Thread(方法名);
//没有不要参数的构造函数,常用的为,1个参数,参数类型是委托类型,需要一个方法指向
变为后台线程:
th.IsBackground = true;
线程启动:
th.Start();
如果要执行带参数的方法,那么这个方法的参数必须是object类型,参数传递的位置在Start方法的括号中
允许跨线程访问对象:
在构造函数的构造方法下面加上:
Control.CheckForIllegalCrossThreadCalls = false;
停止线程:
th.Abort();
.NET 进程和线程的更多相关文章
- 关于Java中进程和线程的详解
一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...
- Java中的进程和线程
Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...
- Java中的进程与线程(总结篇)
详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...
- C# - 多线程 之 进程与线程
并行~并发 并发 Concurrency,逻辑上的同时发生,一个处理器(在不同时刻或者说在同一时间间隔内)"同时"处理多个任务.宏观上是并发的,微观上是按排队等待.唤醒.执行的步骤 ...
- Android 的进程和线程
进程和线程 如果某个应用程序组件是第一次被启动,且这时应用程序也没有其他组件在运行,则android系统会为应用程序创建一个包含单个线程的linux进程.默认情况下,同一个应用程序的所有组件都运行在同 ...
- Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)
本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...
- python之进程与线程
什么是操作系统 可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...
- [转载]了解Linux的进程与线程
本文转自Tim Yang的博客http://timyang.net/linux/linux-process/ .对于理解Linux的进程与线程非常有帮助.支持原创.尊重原创,分享知识! 上周碰到部署在 ...
- python 进程和线程
python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...
- Python_Day10_进程、线程、协程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\ ...
随机推荐
- angularjs 中ie兼容性的问题收集
今天在项目中做ie8的兼容的时候,发现angularjs中一些内容这样写有问题,那样写就没有问题了,自己记录一下内容: 如果遇到了ie8中使用$http.post请求不到数据的时候,以下的方法是获取不 ...
- 转载 GUID介绍
转载 http://www.cnblogs.com/illele/archive/2008/02/25/1080554.html GUID(Global unique identifier)全局唯一标 ...
- 74LS164 for stm32 源码下载
在单片机系统中, 如果并行口的IO资源不够,而串行口又没有其他的作用, 那么我们可以用74LS164来扩展并行IO口,节约单片机资源. 74LS164是一个串行输入并行输出的移位寄存器 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- c# 泛型List的定义、作用、用法
定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用: 泛型最常见的用途是泛型集合 我们在创建列表类时,列表项的数据类型可能是int ...
- HTML中标签和元素的区别
作为一个前端,相信大家最先接触应该都是HTML吧?在HTML中很多人可能都没有把什么叫标签,什么叫元素这个概念搞清楚,为了把这个大家不曾留意的易混淆的搞清楚,特作此一文彻底解决掉这个问题! 首先我们来 ...
- 让Visual Studio 2015 支持ASP.NET MVC4.0.0.1
近日装上了Visual Studio 2015 ,打开之前vs2013创建的MVC4的项目发现无法编译通过,提示System.Web.MVC,System.Web.WebPages 等找不到,网上搜索 ...
- 如何使得VIM显示行号
如何使得VIM显示行号: :set number
- Android 如何更换屏幕上锁界面背景图片
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 使用python编写批量卸载android应用的脚本
该脚本的功能是卸载android手机中安装的所有第三方应用,主要是使用adb shell pm.adb uninstall 命令,所以使用的前提是需要配好adb的环境变量,下面上代码: #!/usr/ ...