【2017-05-04】winfrom进程、线程
一、进程
一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序。
1、开启某个进程
Process.Start("文件缩写名");
注意:Process要解析命名空间。
2、通过绝对路径开启某个进程
Process p = new Process();
p.StartInfo = new ProcessStartInfo("要打开的程序绝对路径");
p.Start();
3、获取全部开启的进程:返回的是一个Process类的数组
Process[] pro = Process.GetProcesses();
4、杀死进程
对象.Kill();
5、常用的开启网页注册账号:
Process.Start("http://.....");
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//限制可以选择的文件类型
openFileDialog1.Filter = "应用程序|*.exe"; DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
//将选中文件的路径放到textBox1里
textBox1.Text = openFileDialog1.FileName;
}
} private void button2_Click(object sender, EventArgs e)
{
//先解析Process,实例化。
Process pro = new Process(); //将路径参数实例化出来。
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text); //设置打开路径需要一个ProcessStartInfo类型参数。
pro.StartInfo = psi; //调用他的打开方法
pro.Start();
} private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//打开默认浏览器,网址是qq。
Process.Start("http://www.qq.com");
} private void button3_Click(object sender, EventArgs e)
{
//获取电脑上开着的所有进程,返还一个Process数组
Process[] pro= Process.GetProcesses(); //遍历数组中每一个进程
foreach (Process p in pro)
{
//把进程打印在richTextBox1中
richTextBox1.Text += p.ToString() + "\r"; //关闭进程,遍历一个关一个,慎用!
//p.Kill(); }
}
}
}
二、线程
每个程序都有一个主线程,控制窗体。
如果主线程要执行的代码需要占用很多时间,就需要将这些要执行的代码另开一个线程来执行。
Thread要解析命名空间。
//使后台线程可以跨线程访问相应的对象。写在构造函数中。
Control.CheckForIllegalCrossThreadCalls = false;
//开一个新线程参数放方法的委托。
Thread th1 = new Thread(test1);
//让这个线程变成后台线程,主线程关闭的时候后台线程也关闭。
th1.IsBackground = true;
//开始执行线程
th1.Start();
//线程关闭
th1.Abort();
将该线程要做的事写成一个没有返回值的方法test1。
这个方法可以没有参数,也可以有一个参数但这个参数必须是object类型
如果方法需要一个参数,在线程开始里边把这个参数传过去。
将这个方法委托到该线程上去。
为了防止线程在关闭主窗口时的延迟关闭导致的程序报错,
在窗口的FormClosing事件中判断线程是否关闭了,如果还未关闭关闭线程。

三、用户控件
用户控件,顾名思义就是用户自己组成的控件。
1、制作用户控件:
在项目中添加新建项选用户控件,改个名字,添加。
注意:在用户控件的生成代码中把里面空间的访问修饰符都改为public。
制作完以后,生成一下,然后在工具箱中就会有这个用控件。
要想给用户控件中的控件设置属性内容,只能用代码设置。
【2017-05-04】winfrom进程、线程的更多相关文章
- 2017/05/04 java 基础 随笔
1.java变量在使用之前必须初始化 int a; a=10 ; int b; 没有初始化,也没有使用也不报错 2.强制类型转换 int a=8: byte b=6; b=(byte)(a+b); ...
- python 进程 线程
进程 线程 操作系统 为什么要有操作系统? 操作系统:操作系统是一个用来协调,管理和控制计算机硬件和软件资源的系统程序.位于底层硬件与应用软件之间 工作方式:向下管理硬件 向上提供接口 切换 1.出现 ...
- 进程&线程(转)
(摘自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html) 在传统的操作系统中,进程拥有独立的内存地址空 ...
- Python并发编程-进程 线程 同步锁 线程死锁和递归锁
进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...
- Python3 进程 线程 同步锁 线程死锁和递归锁
进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...
- pyhon——进程线程、与协程基础概述
一直以来写博客都是实用主义者,只写用法,没信心写原理,但是每一次写作业的过程都有一种掘地三尺的感觉,终于,写博客困难症重症患者经历了漫长的思想斗争,还是决定把从网上淘到的各种杂货和自己的总结放在一起, ...
- android 进程/线程管理(三)----Thread,Looper / HandlerThread / IntentService
Thread,Looper的组合是非常常见的组合方式. Looper可以是和线程绑定的,或者是main looper的一个引用. 下面看看具体app层的使用. 首先定义thread: package ...
- python学习笔记-进程线程
1.什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述 ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- [skill] 进程 线程
在业务逻辑上: 进程线程没有区别. 在系统资源上: 进程拥有自己的地址空间.线程拥有自己的堆栈和临时变量,与其他线程共享地址空间. 在通信代价上: 线程间通信代价更低,实现更方便.进程通信相对开销比较 ...
随机推荐
- spdlog源码阅读 (3): log_msg和BasicWriter
4. log_msg和它的打手BasicWriter 在spdlog源码阅读 (2): sinks的创建和使用中,提到log_msg提供了存储日志的功能.那么到底在spdlog中它是怎么 起到这个作用 ...
- Javascript——依赖注入
本人才学疏浅,本文只为抛砖引玉,欢迎各路大牛前来斧正,不胜感激! 如今各个框架都在模块化,连前端的javascript也不例外.每个模块负责一定的功能,模块与模块之间又有相互依赖,那么问题来了:jav ...
- [原创]HBase学习笔记(3)- Java程序访问HBase
这里介绍使用java api来访问和操作HBase,例如create.delete.select.update等操作. 1.HBase配置 配置HBase使用的zookeeper集群地址和端口. pr ...
- mysql索引使用技巧及注意事项
一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...
- 用Stax方式处理xml
1.读取xml文件,首先用类加载器加载项目目录下的xml文件,从XMLInputFactory创建我所需要的XMLStreamReader,即得到了xml文件.根据XMLStreamConstant ...
- centos mail使用外部SMTP发送邮件
1.安装mailx yum install mailx -y 安装好后,编辑配置文件 mailx -V 12.4 7/29/08 <<mailx的版本号 rpm -qc mailx /e ...
- 判断是否支持WebP
PC端,触屏版: 前端JS方案——利用img标签加载一张base64的WebP图片,在img标签的onload事件中判断该图片是否具有宽高的属性,若有表示支持webP,若没有表示不支持webP.后台判 ...
- Java结合WebUploader文件上传
之前自己写小项目的时候也碰到过文件上传的问题,没有找到很好的解决方案.虽然之前网找各种解决方案的时候也看到过WebUploader,但没有进一步深究.这次稍微深入了解了些,这里也做个小结. 简单的文件 ...
- SearchBar简单展示
import UIKit class SearchViewController: UIViewController,UISearchBarDelegate { let SCREEN_WIDTH = U ...
- 创建你的第一个webdriver python代码
前言 今天我们开始我们的第一个python webdriver自动化测试脚本.并就测试脚本进行一一解释说明. webdriver python代码 本示例代码演示了使用Ie浏览器访问百度进行搜索测试. ...