你的位置:首页 > ASP.net教程

[ASP.net教程]Windowsforms 中 进程,线程


进程:

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。

它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。

Process 类,用来操作进程。

命名空间:using System.Diagnostics;

//通过一个进程,打开指定的文件//1、创建进程对象Process p = new Process();//2.创建一个StartInfo对象,是指定带盘符的路径。ProcessStartInfo psi = new ProcessStartInfo(路径);//3.进程指定及开始p.StartInfo = psi; p.Start(); //设置要打开的文件类型openFileDialog1.Filter = "应用程序|*.exe";//判断是否选择程序文件if (openFileDialog1.ShowDialog() == DialogResult.OK){  //取文件路径   string path = openFileDialog1.FileName;  //新建一个进程   Process p = new Process();  //设置启动信息   ProcessStartInfo ps = new ProcessStartInfo(path);   p.StartInfo = ps;  //启动进程   p.Start();}

例子:注销

//string path = Application.StartupPath;//这个path就是你要调用的exe程序的绝对路径//获取自身exe或dll的文件名路径string s = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;//创建进程Process p = new Process();//设置进程启动信息ProcessStartInfo ps = new ProcessStartInfo(s);p.StartInfo = ps;//启动进程p.Start();//关闭当前程序this.Close();

线程:

timer控件就是一个线程

并发

两个线程的关系其实就是异步关系

有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。

区别:进程有自己独立的资源,线程共用资源。

Thread类, 命名空间:using System.Threading ;

程序默认只有一个主线程,如果做复杂处理,则会出现假死状态,因为一条线程同时只能做一件事。

多线程的作用:同时做多件事情,节约时间,后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况。

 

线程之间是独立的,不能跨线程访问

取消跨线程访问,需写在Load事件里

Control.CheckForIllegalCrossThreadCalls = false;

//造一个线程Thread th=new Thread();//括号里需要写线程要操作的方法,不含括号
//执行线程th.Start();

//如果该方法为带参数的,参数必须为object类型的private void Test(object n){ int count = Covert.ToInt32(n) for(int i=0;i<count;i++) {  richTextBox1.Text +=i.tostring(); }}//调用线程Thread th =new Thread(Test);//执行线程,在这里给参数th.Start(2000);

 

线程分为两种:前台线程——只有所有的前台线程都关闭才能完成程序关闭。

后台线程——只要所有的前台线程都结束,后台线程则会自动结束。

//设置th线程为后台线程th.IsBackground=true;

  FromClosing事件中:

//判断新线程是否为null,如果为null,那就自动关闭了if(th != null){  //立即结束线程,但是结束后就不能再被重新Start了  th.Abort(); }