一、进程
1、Process
提供对本地和远程进程的访问,并能够启动和停止本地系统进程。
一个程序就是一个进程。
命名空间using System.Diagnostics;
(1) Start ():启动进程,主要有如下参数设置
Start( ProcessStartInfo )
Start( string FileName ) //路径
Start( string FileName, string Arguments ) //Arguments:参数
(2) 属性:
Id:唯一进程标识号
ProcessName:进程名称
MachineName:进程运行所在的计算机名
StartInfo:进程的 StartInfo
StartTime:启动进程的时间
ExitTime:退出进程的时间
HasExited:进程是否已经终止
2、ProcessStartInfo:与 Process 一起使用,为 Process 设置启动参数
3、实例
(1)基本方法: Process.Start("calc");使用这个方法的前提是知道程序运行的名字
(2)实例化,使用路径
try //防止报错程序崩溃 { Process p = new Process();//实例化进程类 //创建进程开启路径对象 ProcessStartInfo pf = new ProcessStartInfo(textBox1.Text); p.StartInfo = pf;//进程类开启路径指向 p.Start();//启动进程 } catch { MessageBox.Show("路径错误"); }
二、线程
1 进程是主线程,线程去执行一段需要时间的代码,主线程不会被占用,程序就
不会出现假死状态了。
线程就像是一个timer一样,就算timer的代码一直执行,也不会阻塞整个窗体上其他控件的可操作性。
使用线程可以大大提高代码的可执行效率。
2 线程所在的命名空间:System.Threading;
3实例
(1)要注意的是,必须在调用Start方法之前设置线程的类型,否则一但线程运行,将无法改变其类型。
(2)程序默认所有的线程都为:前台线程
将新开的线程变为后台线程:th.IsBackground = true;
变为后台线程在关闭窗体时,线程未执行完工作内容,那么会默默的继续执行,直到执行完毕后才会
将整个进程关闭,不会影响窗体关闭。
List<Thread> tlist = new List<Thread>();//全局变量,存放线程
// 函数1
//创建线程类,并使用委托,指向函数 Thread th = new Thread(方法名); th.IsBackground = false;//变为后台线程 th.Start(ss);//线程启动,将参数传给方法
tlist.Add(th);//将线程放入集合
// 函数2
foreach (Thread t in tlist)
{
t.Abort();//停止线程
}
(3)用线程执行方法,只能传一个参数,并且此参数必须是object类型。
(4)程序默认不允许跨线程访问对象,关闭监控就可以了。
构造函数中 Control.CheckForIllegalCrossThreadCalls = false;
(5)若停止线程与开启线程不在同一个函数中,定义一个全局变量:集合类型