进程:

一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况。

进程要使用的类是:Process
它在命名空间:System.Diagnostics;

1、静态方法Start();

2、也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给

StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径)

private void button1_Click(object sender, EventArgs e)
{
Process.Start("chrome");
}

也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给
StartInfo属性设置一个对象,来通知它要打开的是哪个进程

//获取路径
private void button2_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "应用程序|*.exe";
DialogResult dr = openFileDialog1.ShowDialog();
if(dr==DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
}
}
//打开文件
private void button3_Click(object sender, EventArgs e)
{
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
p.StartInfo = psi;
p.Start();
}
复制代码

进程

线程:

一个进程就像是一个公司,默认只有一个老板

老板叫做 主线程 
主线程一旦让它去执行一段需要时间的代码,那么就会出现
程序假死,失去控制

原因是:线程同一时间只能做一件事,而主线程是操作窗体控制的,一旦被占用,那么窗体就没人控制了。

解决办法:

招一个员工帮老板干这个活

开启线程:  使用Thread类

线程基本使用:

//创建一个线程对象,告诉它要执行的是哪一个方法
Thread th = new Thread(aaa);

//准备好了,开始执行,不是立即开始,CPU决定什么时候开始
th.Start();
---------------------------------------------------------------
需要跨线程访问对象:
线程需要执行一个方法,而这个方法允许有一个参数,并且这个参数必须是object类型的

程序默认不允许跨线程访问对象,因为监控开着
需要关闭监控
在构造函数的构造方法下面写上:
Control.CheckForIllegalCrossThreadCalls = false;
---------------------------------------------------------------
程序退出立刻关闭所有线程:
线程默认开启为前台线程,程序必须将所有的前台线程执行完毕后才会真正退出程序

解决办法:将线程变为后台线程
//设置后台线程
th.IsBackground = true;

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//程序默认不允许跨线程访问对象,因为监控开着,需要关闭监控,在构造函数的构造方法下面写上:
Control.CheckForIllegalCrossThreadCalls = false;
} private void button1_Click(object sender, EventArgs e)
{
//创建一个线程对象,告诉它要执行的是哪一个方法
Thread th = new Thread(NewMethod);
//设置后台线程
th.IsBackground =true;
//
th.Start(sender);
(sender as Button).Enabled = false;//开始后按钮不可用
} private static void NewMethod(object obj)//提取的方法
{
for (int i = ; i < ; i++)
{
Console.WriteLine(i);
Thread.Sleep();//1秒循环一次
}
(obj as Button).Enabled = true;
}
    }

线程

Winform进程、线程的更多相关文章

  1. WinForm进程 线程

    进程主要调用另一程序,线程 分配工作. 一.进程: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.Process 类,用来操 ...

  2. winform进程、线程、TreeView递归加载

    进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的 ...

  3. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

  4. python学习笔记-进程线程

    1.什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述 ...

  5. 获取系统中所有进程&线程信息

    读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...

  6. [skill] 进程 线程

    在业务逻辑上: 进程线程没有区别. 在系统资源上: 进程拥有自己的地址空间.线程拥有自己的堆栈和临时变量,与其他线程共享地址空间. 在通信代价上: 线程间通信代价更低,实现更方便.进程通信相对开销比较 ...

  7. pyhon——进程线程、与协程基础概述

    一直以来写博客都是实用主义者,只写用法,没信心写原理,但是每一次写作业的过程都有一种掘地三尺的感觉,终于,写博客困难症重症患者经历了漫长的思想斗争,还是决定把从网上淘到的各种杂货和自己的总结放在一起, ...

  8. android 进程/线程管理(一)----消息机制的框架

    一:android 进程和线程 进程是程序运行的一个实例.android通过4大主件,弱化了进程的概念,尤其是在app层面,基本不需要关系进程间的通信等问题. 但是程序的本质没有变,尤其是多任务系统, ...

  9. android 进程/线程管理(二)----关于线程的迷思

    一:进程和线程的由来 进程是计算机科技发展的过程的产物. 最早计算机发明出来,是为了解决数学计算而发明的.每解决一个问题,就要打纸带,也就是打点. 后来人们发现可以批量的设置命令,由计算机读取这些命令 ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(32)-swfupload多文件上传[附源码]

    系列目录 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项目上文件上传是比不可少的,大家 ...

  2. ng-directive-选择数据

    本文是用angularjs指令写的一个简易数据选择功能,其实就是两个下拉框,把两边的数据相互交换而已,这样的功能最早应该是用jquery写过,但移动端js框架angularjs如果还嵌套jquery来 ...

  3. 计算机程序的思维逻辑 (39) - 剖析LinkedList

    上节我们介绍了ArrayList,ArrayList随机访问效率很高,但插入和删除性能比较低,我们提到了同样实现了List接口的LinkedList,它的特点与ArrayList几乎正好相反,本节我们 ...

  4. Swift 必备开发库 (高级篇) (转)

    1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...

  5. C#索引器

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  6. 利用C#开发移动跨平台Hybrid App(一):从Native端聊Hybrid的实现

    0x00 前言 前一段时间分别读了两篇博客,分别是叶小钗兄的<浅谈Hybrid技术的设计与实现>以及徐磊哥的<从技术经理的角度算一算,如何可以多快好省的做个app>.受到了很多 ...

  7. 使用java代码关闭指定端口的程序-windows

    转载请请在页首注明作者与出处 一:问题由史 今天遇到一个问题,就是在实现自动化灾备的时候,发现原有死掉的程序没有完全关闭,当然这都不是本文的重点,重点是这个时候,我得把它完全关闭,所以才有了这篇文章. ...

  8. 利用Python进行数据分析(13) pandas基础: 数据重塑/轴向旋转

    重塑定义     重塑指的是将数据重新排列,也叫轴向旋转. DataFrame提供了两个方法: stack: 将数据的列“旋转”为行. unstack:将数据的行“旋转”为列. 例如: 处理堆叠格式 ...

  9. ASP.NET MVC 发送邮件(异步)

    最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...

  10. No-args constructor for class X does not exist. Register an InstanceCreator with Gson for this type to fix this problem.

    Gson解析JSON字符串时出现了下面的错误: No-args constructor for class X does not exist. Register an InstanceCreator ...