WinForm 进程和线程
进程:
//进程用到的类Process,需要进行解析 using System.Diagnostics
Process.Start("calc");//Process是非静态方法,括号里面是要开启的进程的名字
(静态方法与非静态方法区别:静态方法不用实例化对象,直接可以点出里面的方法)
弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误
一个比较好用的开启进程的办法:
//实例化进程类
Process p = new Process();
//创建进程开启路径对象
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
//进程类开启路径指向
p.StartInfo = psi;
//启动进程,不是立刻开启,什么时候开启时由CPU决定
p.Start();
程序为什么会假死?因为主线程被占用了
线程去执行一段需要时间的代码,主线程不会被占用,程序就不会出现假死状态了
创建线程的方法:
//创建线程类,并使用委托,指定这个线程要执行的是哪个函数
Thread th = new Thread(aaa);
//开启线程执行功能,也不是立刻执行
th.Start();
在运用线程的过程中遇到的两个常见问题及其解决办法如下:
问题一:
线程可以开启很多个,如果用户可以无限点击按钮,那么有可能会造成电脑CPU使用率过高
用线程执行方法,只能传一个参数,并且此参数必须是object类型
程序默认不允许跨线程访问对象
关闭监控就可以了
怎么关?
在构造函数中,实例化方法下面加上这句话:
Control.CheckForIllegalCrossThreadCalls = false;
问题二:
默认主窗体已经关闭,但是线程如果还未执行完工作内容,那么会默默的继续执行,直到执行完毕后才会将整个进程关闭
程序默认所有的线程都为:前台线程
解决办法:将新开的线程变为后台线程
th.IsBackground = true;
总结:
线程所在的命名空间:System.Threading;
线程类:Thread th = new Thread(方法名);
//没有不要参数的构造函数,常用的为,1个参数,参数类型是委托类型,需要一个方法指向,变为后台线程:
th.IsBackground = true;
线程启动:
th.Start();
如果要执行带参数的方法,那么这个方法的参数必须是object类型,参数传递的位置在Start方法的括号中
允许跨线程访问对象:
在构造函数的构造方法下面加上:
Control.CheckForIllegalCrossThreadCalls = false;
停止线程:
th.Abort();
WinForm 进程和线程的更多相关文章
- winform进程、线程、TreeView递归加载
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的 ...
- Winform进程、线程
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程要使用的类是:Process它在命名空间:System.Diagnostics; 1.静态方法Start(); 2 ...
- WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); Process.S ...
- winform 进程,线程
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); 点击按钮打开一个程 ...
- Winform 进程、线程、treeview
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start();也可以实例化对象,来 ...
- C#窗体 WinForm 进程,线程
一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using Sys ...
- WinForm 进程、线程
一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using Sys ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 关于Java中进程和线程的详解
一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...
随机推荐
- Apple的通知
Apple的通知 1. 本地通知 //取消原来的通知,可设可不设 [[UIApplication sharedApplication]cancelAllLocalNotifications]; //初 ...
- Windows Socket 组件 HP-Socket v2.2.3
高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布 HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和 ...
- CC.NET模板简化配置
[Hello CC.NET]巧用模板简化配置 从 <[Hello CC.NET]CC.NET 实现自动化集成> 到 <[Hello CC.NET]自动化发布时 Web.config ...
- Redis系统学习 四、超越数据结构
5种数据结构组成了Redis的基础,其他没有关联特定数据结构的命令也有很多.我们已经看过一些这样的命令:info,select,flushdb,multi,exec,discard,watch,和ke ...
- MYSQL 分表实践
基本条件: 无索引 主表 test_0 数据:一百万条 数据库引擎 InnoDb 分表 test_1...test_100 数据 每张一万条,一共一百万条 数据库引擎 InnoDb 流程: 主表中 ...
- Linq 结果转成 json
public string BindGrid(string page,string rows) { int pageIndex = 0; if ...
- iOS 开发问题集锦(一)
最近在QQ群里好多人问一些比较基础的问题,在这罗列一下: 1.键盘上的斜杠键坏掉了,怎么样用快捷键进行注释呢? 首先在Xcode中注释的默认快捷键为:command+/: 其次可以自行修改快捷键:Xc ...
- 案例研究:Web应用出现间歇性的SqlException
案例研究:Web应用出现间歇性的SqlException 2013-07-29 14:36 by 微软互联网开发支持, 231 阅读, 3 评论, 收藏, 编辑 最近有客户找到我,说他们生产环境的事件 ...
- 分享一套 CodeSmit 代码生成模板。
分享一套 CodeSmit 代码生成模板. 住博客园 5 年了,以前也发过一些博文,但都在 一天后 / 几周后 / 几年后 将它删了:因为感觉代码写得不好:不清晰或侵入太大,哪怕只有一句侵入. 可是最 ...
- C#编写Windows 服务
C#编写Windows 服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时 ...