进程:

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

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

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=;i<count;i++)
{
richTextBox1.Text +=i.tostring();
}
} //调用线程
Thread th =new Thread(Test); //执行线程,在这里给参数
th.Start();

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

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

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

  FromClosing事件中:

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

最新文章

  1. javascript 表单
  2. linux下EOF写法梳理
  3. 比achartengine更加强大的Android图表控件。
  4. 执行时关闭标识位 FD_CLOEXEC 的作用
  5. [转载]BT656/BT601/BT1120协议
  6. hmailserver
  7. Sqoop-1.4.6.bin__hadoop-2.0.4-alpha 环境搭建
  8. 【Cocos2d TestCpp实例模仿一】-- ActionsTest
  9. CodeForces 706D Vasiliy&#39;s Multiset
  10. 十三、 Spring Boot 启动加载数据 CommandLineRunner
  11. 【移动开发】ViewPager缓存机制
  12. ECharts将折线变平滑和去掉点的属性
  13. 7、Flutter banner_view 轮播图的使用
  14. wdk1703+vs2015编译的诡异问题
  15. Java中的位运算符
  16. [代码]Delphi实现窗体内嵌其他应用程序窗体
  17. django项目中使用项目环境制作脚本 通过终端命令运行脚本文件
  18. 用C读取系统明文(附源码)
  19. Python set特点
  20. cpu_test

热门文章

  1. 一颗ARM架构芯片的软硬件构成
  2. Windows server 2003 + IIS6 搭建Asp.net MVC执行环境
  3. (WPF)附加属性
  4. slice,substr,substring的区别
  5. python 【第三篇】函数基础
  6. onDestroy强制退出后,process crash的处理
  7. Arch Linux 下Android 源代码的下载以及编译
  8. 查看android-support-v4.jar引出的问题
  9. u-boot支持LCD显示(基于TQ2440)【转】
  10. PHPExcel使用收藏