winform(进程和线程)

一、进程:
需要有用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();

时间: 2024-10-13 04:05:19

winform(进程和线程)的相关文章

Winform进程、线程

进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程要使用的类是:Process它在命名空间:System.Diagnostics; 1.静态方法Start(); 2.也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给 StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径) private void button1_Click(object sender, EventArgs e) { Process.Start("ch

WinForm 进程与线程

进程: 最基础的打开进程的方法: Process.Start("calc"); 弊端:必须输入打开进程的名字,如果打开进程的名字错误,程序崩溃 完善的打开进程的方法: //实例化进程类 Process p = new Process(); //创建进程开启路径对象 ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text); //进程类开启路径指向 p.StartInfo = psi; //启动进程(实际不是立即开启,由CPU运

WinForm 进程和线程

进程: //进程用到的类Process,需要进行解析 using System.Diagnostics Process.Start("calc");//Process是非静态方法,括号里面是要开启的进程的名字 (静态方法与非静态方法区别:静态方法不用实例化对象,直接可以点出里面的方法) 弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误 一个比较好用的开启进程的办法: //实例化进程类 Process p = new Process(); //创建进程开启路

C#窗体 WinForm 进程,线程

一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc");  //打开计算器Process.Start("mspaint");  //打开画图Process.Start("iexplore" , "http://www.

Winform 进程、线程、treeview

进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start();也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给StartInfo属性设置一个对象,来通知它要打开的是哪个进程 private void button1_Click(object sender, EventArgs e) { Process p = new Process(); ProcessS

WinForm 进程、线程

一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc"); //打开计算器Process.Start("mspaint"); //打开画图Process.Start("iexplore" , "http://www.ba

winform 进程,线程

一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc");  //打开计算器Process.Start("mspaint");  //打开画图Process.Start("iexplore" , "http://www.

C#网络编程基础之进程和线程详解

在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下baike. 进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动.它是操作系统动态执行的基本单元, 在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 线程:是"进程"中某个单一顺序的控制流. 关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到. 二:进程

linux查看某个进程的线程id(spid)

鉴于linux下线程的广泛使用 我们怎么查看某个进程拥有的线程id了 现在很多服务的设计 主进程->子进程->线程(比如mysql,varnish) 主进程负责侦听网络上的连接 并把连接发送给子进程 子进程派生线程去处理这些线程 mysql(父进程460,子进程863) 1 460 425 333 ? -1 S 0 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/storage/mysql/backup --pid-file=/

该进程或线程自上一个步骤以来已更改

相关解决办法如下: VS进行高度时,断点处提示"该进程或线程自上一个步骤以来已更改" 每个断点跑两遍似的. 这个是由于在VS环境中 勾上了 "工具\选项--->调试--要求源文件与原始版本完全匹配"这个项 该进程或线程自上一个步骤以来已更改 英文表述:The process or thread has changed since last step 以下是是从网上摘录的解决办法. Q: I have a console application that exe